我正在阅读Scala中的编程书籍,据说:
... in this case , its side effect is printing to the standard output stream.
而且我看不到副作用在哪里,因为对于相同的输入,println将输出相同的输出(我认为)
更新
例如,任何时候我们调用:
println(5)
它会打印 5 ,我看不到调用
println(5)
会打印5以外的值的情况!
最佳答案
您可以通过将表达式替换为其结果来判断表达式是否有副作用。如果程序改变了含义,那会有副作用。例如,
println(5)
是一个不同的程序
()
也就是说,副作用是在评估表达式的结果中未进行编码的任何可观察到的效果。这里的结果是
()
,但是该值中没有任何东西可以编码5现在已经出现在屏幕上的事实。
关于scala - 为什么println被认为是不纯函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403306/