【发布时间】:2013-09-08 12:16:01
【问题描述】:
我试图在 Scala 中实现闭包示例,来自 Neal Ford 在 Groovy 中的功能性思维演示文稿。请参阅幻灯片 #43 和 44 https://sea.ucar.edu/sites/default/files/Functional_Thinking.pdf
def makeCounter : Unit = {
var localVar = 0
return { localVar += 1 }
}
此代码返回一个匿名函数。现在我想通过调用这个匿名函数来增加 localVar。
我有两个问题:
1.如何调用匿名函数?
2. 调用后如何检查localVar的值是否增加?
首先我尝试了这个 -
val c1 = makeCounter()。它抛出以下错误:
错误:Unit类型的makeCounter不带参数
然后我尝试了这个。
val c1 = makeCounter
这没有给出任何错误。只打印 c1: Unit = ()。
那么,
print(c1) print(),而 c1() 给出了同样的错误。
【问题讨论】:
-
"此代码返回一个匿名函数。" - 那你为什么把它的返回类型声明为
Unit? -
我认为他将按名称的 Unit 参数与纯 Unit 混合。
标签: scala functional-programming anonymous-function