How can I return a function side-effecting lexical closure https://stackoverflow.com/questions/22288329/side-effecting-lexical-closure-vs-function-in-scala1 in Scala?
例如,我正在看Go 中的代码示例 http://golang.org/doc/play/#598466966704134886:
...
// fib returns a function that returns
// successive Fibonacci numbers.
func fib() func() int {
a, b := 0, 1
return func() int {
a, b = b, a+b
return b
}
}
...
println(f(), f(), f(), f(), f())
印刷
1 2 3 5 8
我不知道如何在 Scala 中编写相同的内容。
1. Corrected after Apocalisp https://stackoverflow.com/questions/4262241/how-to-return-a-function-in-scala/4262932#4262932 comment
稍微短一点,不需要退货。
def fib() = {
var a = 0
var b = 1
() => {
val t = a;
a = b
b = t + b
b
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)