0

我正在学习函数式编程中的副作用。我知道外部效应是在函数之外可以观察到的效应,而内部效应是从外部看不到的。我想知道修改局部变量是外部影响还是内部影响。

由于局部变量只能在函数内部访问,而对外界不可见,我认为修改局部变量是内部效应的一个例子,因为它对外界是不可观察的。

但是,我不确定我的推理是否正确。任何见解都值得赞赏。

4

1 回答 1

2

这取决于。

只要所讨论的函数总是为相同的输入返回相同的值,那么修改的局部变量就是内部的:调用者无法判断局部状态是否被修改。但是,如果修改后的局部变量存储在闭包中,并且函数根据该局部变量的状态返回不同的值,那么即使调用者不能直接观察关闭的 over 变量,副作用也是外部的。

至于修改局部变量是否是个好主意,好吧,我不是纯粹主义者,但大多数支持不变性的论点仍然适用于局部变量和全局变量。另一方面,在一个简短、清晰的函数中,为了避免突变而扭曲代码似乎有点矫枉过正。这有点依赖于语言。用你最好的判断。

于 2019-07-26T10:54:17.857 回答