【发布时间】:2014-06-18 16:29:43
【问题描述】:
我正在学习 Scala 作为个人兴趣,我对以下返回值感到困惑,我希望最终会打印出 52:
def lexicalTest(a: Int) = {
(b: Int) => {
(c: Int) => {
a + b + c
}
}
}
val step01 = lexicalTest(10)
val step02 = step01(10)
def plusThirty(a: Int, b: Int) {
a + b
}
println(plusThirty(22, step02(10)))
如果step02(10)肯定返回30,而且是Int类型,那为什么我的返回等于()
FWIW:我是从让这种东西在 JavaScript 中工作的角度出发的。
更新:感谢 cookie 怪物,def plusThirty(a: Int, b: Int) { 应该是 def plusThirty(a: Int, b: Int) = {
【问题讨论】:
-
我对 Scala 一无所知,但我注意到您的
plusThirty函数的第一行中没有=。我在在线 Scala 评估器中尝试了它,并修复了它。def plusThirty(a: Int, b: Int) = { -
啊!非常感谢。总是在背后捅自己一刀 =) 它有效
-
原因是没有
=的函数被定义为返回Unit的函数,因此不会返回表达式的结果 -
关于您的代码的注释(曾经通过引入缺少的
=进行修复):您使用的每个花括号都是不必要的!
标签: javascript scala functional-programming closures