如何在Scala中返回函数1001

例如,我在看this code sample in 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())

fingerprint 1 2 3 5 8

我不知道如何在Scala中编写同样的代码.

1.更正Apocalisp条 comments 后

推荐答案

稍微短一点,你就不需要退货了.

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

Go相关问答推荐

如何创建两个连接的io.ReadWriteClosers以用于测试目的

如何在另一个文件夹中使用Delve运行二进制文件?

将DATE类型的SQL字段扫描到GO struct 字段

在 go 中,将接收器 struct 从值更改为指针是否向后兼容?

使用 goroutine 比较 Golang 中的两棵树是等价的

Golang Docker Selenium Chrome

Kubo,来自 IpfsNode.Bootstrap 的无效内存地址或零指针取消引用

如何使用 GolangCI 删除未使用的导入

使用 Go 解组 SOAP 消息

为什么 `append(x[:0:0], x...)` 将切片复制到 Go 中的新后备数组中?

在 Golang 模板中计算时间/持续时间

在恒等函数中将类型 T 转换为类型 U

如何在golang中按字符a对字符串数组进行排序

使用反射在 struct 内迭代切片 struct

Golang - 无法从 pipped Windows 命令中获取结果

将未知长度切片的值分配给Go中的 struct ?

如何在 Go 中使用 Pact 返回错误请求(400、500)?

Go:如何通过 GIN-Router 从 AWS S3 将文件作为二进制流发送到浏览器?

Go 1.18 泛型如何使用接口定义新的类型参数

Go 语言的select语句