本帖最后由 SwiftRobot 于 2016-8-8 08:39 编辑

斐波拉契数是自然界一个神奇的数字,相传世间万物都遵循了这个规律。

Closures:用 Swift 和 Go 一起写斐波拉契数 1

Closures:用 Swift 和 Go 一起写斐波拉契数,哪个语法更优雅? - 敏捷大拇指 - Closures:用 Swift 和 Go 一起写斐波拉契数 1


今天在写 Go 的斐波拉契数的时候,突然想起来我很少会在 Swift 里用这种闭包当作返回值的形式,一般用法都是闭包当作了参数,于是写了个 Swift 版本,Just For Fun.




1、Go 语言版本

[Golang] 纯文本查看 复制代码
package main  
import "fmt"

func nextNum() func() int {  
    i,j := 1,1
    return func() int {
        var tmp = i+j
        i, j = j, tmp
        return tmp
    }
}

func main(){  
    for i:=0; i<10; i++ {
        fmt.Println(nextNumFunc())
    }
}


Closures:用 Swift 和 Go 一起写斐波拉契数 2

Closures:用 Swift 和 Go 一起写斐波拉契数,哪个语法更优雅? - 敏捷大拇指 - Closures:用 Swift 和 Go 一起写斐波拉契数 2





2、Swift 语言版本

[Swift] 纯文本查看 复制代码
import UIKit

func nextNum() -> () -> Int {  
    var (i, j)  = (1, 1)
    return { () -> Int in
        let tmp = i + j
        (i, j) = (j, tmp)
        return tmp
    }
}

let nextNumFunction = nextNum()  
for _ in 0...10 {  
    print(nextNumFunction())
}




相较之下,还是 Swift 的语法漂亮呀。




作者:Kevin,Catch Inc 创始人,Github/Dribbble/Twitter/微博 kevinzhow Email kevinchou.c@gmail.com @ Guangzhou  http://zhowkev.in