如何在scala中返回一个函数 [英] How to return a function in scala
本文介绍了如何在scala中返回一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何返回功能 侧面影响词法关闭 1 在Scala中?
How can I return a function side-effecting lexical closure1 in Scala?
例如,我正在查看此代码示例在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
prints 1 2 3 5 8
我无法弄清楚如何在Scala中编写相同的代码。
And I can't figure out how to write the same in Scala.
1。在 Apocalisp 评论
推荐答案
稍微短一些,您不需要返回。
Slightly shorter, you don't need the return.
def fib() = {
var a = 0
var b = 1
() => {
val t = a;
a = b
b = t + b
b
}
}
这篇关于如何在scala中返回一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文