在一个仅在内部使用的函数中具有可变的局部变量(例如,该函数没有副作用,至少不是故意的)是否仍被视为“非函数”?
例如,在“使用Scala进行功能编程”课程样式检查中,将任何var
用法视为错误
我的问题是,如果函数没有副作用,是否仍然不鼓励编写命令式代码?
例如,如果不更改输入,而不是对累加器模式使用尾递归,那么执行局部for循环并创建局部可变ListBuffer
并将其添加到本地怎么了?
如果答案是“是的,即使没有副作用,也总是劝阻他们”,那是什么原因呢?
var
总是无功能的。Scala具有惰性val和尾部递归优化,可以完全避免var。