我在思考 Clojure 中副作用的含义。 Clojure 中的副作用到底是什么?谁能用一个例子来解释一下这一点?
最佳答案
任何编程语言的副作用都是所提供的参数和返回的结果之间没有直接关联的所有操作。
(+ 3 4) ; ==> 7 (result is always a mapping between arguments and result. It will always be 7 no matte rhow many times you do it.
(rand-int 4) ; ==> 0,1,2, or 3. You have no idea what it will produce next.
第一个表达式是函数式的。您可以使用其结果创建所有不同的两个值的查找表,但您不会知道其中的差异。
对于同一参数,第二个可能会给出不同的结果。计算必须基于其他东西,比如内部状态,而不仅仅是参数。它有副作用。
程序中使用的典型副作用是 I/O 和对象突变。
关于clojure - Clojure中副作用的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899630/