【发布时间】:2019-07-13 20:14:55
【问题描述】:
val factor = 3
val multiplier = (i:Int) => i * factor
如果我打电话给multiplier(3),它会给我们一个输出9。
我想要的是
multiplier(3)
output =9
multiplier(3)
output=6
由于因子是不可变的,如何更改此类功能的乘数?
【问题讨论】:
-
您不能修改因子,因为它声明为 val。我不确定你到底想要什么,但为什么不 i*(factor-1) ?
-
Referential transparency。在 FP 圈子里是一个相当重要的概念。
-
您能否详细说明您希望
multiplier如何工作?为什么第一次返回*3,第二次返回*2?第三次应该怎么办? -
我真的怀疑你不需要改变任何东西,可能的方法是使用柯里化 ..docs.scala-lang.org/tour/currying.html
标签: scala closures immutability