一尘不染

如何在Scala中返回函数

go

我怎样才能返回一个 函数
副作用的词汇封闭 1 斯卡拉?

例如,我在Go中查看此代码示例

...    
// 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.在Apocalisp评论后更正


阅读 352

收藏
2020-07-02

共1个答案

一尘不染

稍短一些,您不需要退货。

def fib() = {
    var a = 0
    var b = 1
    () => { 
        val t = a;
        a = b
        b = t + b
        b
    }
}
2020-07-02