美文网首页
100tips 总结

100tips 总结

作者: Xiao_Li | 来源:发表于2015-08-25 13:15 被阅读41次

柯里化

柯里化就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并且返回结果的新方法。

func addTwoNumber(a: Int)(num: Int) -> Int {
    return a + num
}
let addToFour = addTwoNumber(4)
let result = addToFour(6)         // result is 10

Sequence

Swift 的 for...in 可以用在所有实现了 SequenceType 的类型上,而为了实现 SequenceType 你首先需要实现一个 GeneratorType。比如一个实现了反向的 generator 和 sequence 可以这么写:

// 先定义一个实现了 GeneratorType protocol 的类型
// GeneratorType 需要指定一个 typealias Element
// 以及提供一个返回 Element? 的方法 next()
class ReverseGenerator: GeneratorType {
    typealias Element = Int

    var counter: Element
    init<T>(array: [T]) {
        self.counter = array.count - 1
    }

    init(start: Int) {
        self.counter = start
    }

    func next() -> Element? {
        return self.counter < 0 ? nil : counter--
    }
}

// 然后我们来定义 SequenceType
// 和 GeneratorType 很类似,不过换成指定一个 typealias Generator
// 以及提供一个返回 Generator? 的方法 generate()
struct ReverseSequence<T>: SequenceType {
    var array: [T]

    init (array: [T]) {
        self.array = array
    }

    typealias Generator = ReverseGenerator
    func generate() -> Generator {
        return ReverseGenerator(array: array)
    }
}

let arr = [0,1,2,3,4]

// 对 SequenceType 可以使用 for...in 来循环访问
for i in ReverseSequence(array: arr) {
    print("Index \(i) is \(arr[i])")
}

??

var level : Int?
var startLevel = 1

var currentLevel = level ?? startLevel   // currentLevel = startLevel

??声明为:

func ??<T>(optional: T?, @autoclosure defaultValue: () -> T?) -> T?

func ??<T>(optional: T?, @autoclosure defaultValue: () -> T) -> T

猜测第二种的实现为:

func ??<T>(optional: T?, @autoclosure defaultValue: () -> T) -> T {
    switch optional {
        case .Some(let value):
            return value
        case .None:
            return defaultValue()
        }
}

定义一个操作符

infix operator +* {
    associativity none
    precedence 160
}

infix:中位操作符,前后都是输入,其他还包括prefix, postfix
associativity:定义了结合律,加法和减法都是left(从左往右),这里none表示结果不会再和其他结合。
precedence:优先级,乘除是150,加减是140,这里160最高。

相关文章

  • 100tips 总结

    柯里化 柯里化就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并且返回结果的新方法。 S...

  • 100Tips - 柯里化(Currying)

    柯里化的含义 柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数...

  • 专题总结(待续。。。)

    质粒总结 引物总结 抗体总结 细胞系总结 模式动物总结 机制功能总结

  • 工作总结――让你欢喜让你忧

    哇哈哈,工作总结...... 工作中,我们常会被要求写各种总结,活动总结、销售总结、培训总结、月总结、季度总结.....

  • 工作总结万能公式

    总结汇报是职场上经常遇到的事,有周总结、月总结、季度总结、年中总结、年终总结、重点项目总结、重要环节总结等...

  • 缺不了的总结

    从小到大,缺不了的总结。知识点总结,读书电影的观后感,章节总结,学科总结,学期总结,新年总结,工作周总结月总结年中...

  • Java 知识点总结

    Java技术总结 总结内容如下: 1.语法总结, 2 面向对象总结, 3 线程总结, 4 输入输出流总结, 5 集...

  • 写在三十六岁(5)

    总结 又是一年十二月,各种总结开始写起,工作总结、家庭总结、财务总结…… 总结有它一定的存在的...

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

  • (原创)15条适用于领导讲话、工作总结的二级标题,满满干货,收藏

    (作者:茶水泡面) 领导讲话稿、单位工作总结(年度总结、季度总结、单项总结、专题总结,甚至月总结哪一样都是要写的)...

网友评论

      本文标题:100tips 总结

      本文链接:https://www.haomeiwen.com/subject/qurqcttx.html