【发布时间】:2017-07-01 19:11:20
【问题描述】:
我正在学习函数式编程,我可以理解为什么不可变比可变对象更受欢迎。
This的文章也解释的很好。
但我无法理解为什么要在纯函数内部执行赋值。
我能理解的一个原因是变量可变性导致锁定,因为在 scala 中的纯函数中,我们主要是尾递归,这会在调用堆栈而不是堆上创建变量/对象。
在函数式编程中应该避免变量赋值还有其他原因吗?
【问题讨论】:
-
纯函数只依赖于给它的参数。这意味着每次使用相同的参数调用该函数时都会返回相同的结果。如果函数使用在函数外部定义的变量,那么它不会每次都返回相同的结果。这取决于变量!
-
如果变量是函数的本地变量并且没有在其他地方使用怎么办?
-
如果给定相同的参数,函数每次返回相同的结果(没有副作用),它是(外部)纯的。
-
我发现这个问题可以回答你的问题:softwareengineering.stackexchange.com/questions/196112/…
标签: scala functional-programming