Sou*_*nta 16 functional-programming scala var mutable
我知道Scala有var
(对于可变状态)但是纯函数式编程不鼓励使用任何可变状态,而是专注于使用val
所有东西.
来自一个势在必行的世界,很难放弃可变的状态.
我的问题是什么时候可以在你的Scala代码中使用var?所有代码都可以使用val完成.如果是,那么为什么Scala有变量呢?
Kim*_*bel 15
以下是Scala中vars的一些原因:
即使从函数式编程的角度来看,如果它们没有将范围保留在定义范围内,也可以在本地使用vars(或可变对象).
例如,考虑这个(人为的)函数,它返回一个列表的大小:
def dumbSize( lst: List[Int] ): Int = {
var i = 0
var rest = lst
while( rest != Nil ) {
i += 1
rest = rest.tail
}
i
}
Run Code Online (Sandbox Code Playgroud)
尽管这个(丑陋的)函数使用了变量,它仍然是纯粹的(没有副作用,它总是会返回给定参数值的相同结果).
"可变状态封装"的另一个例子是演员模型,其中演员状态通常是可变的.