scala - 为什么 println 被认为是不纯函数?
问题描述
我正在阅读 scala 编程的书,据说:
...在这种情况下,它的副作用是打印到标准输出流。
而且我看不出副作用在哪里,因为对于相同的输入, println 将打印相同的输出(我认为)
例如任何时候我们调用
更新:
println(5)
它会打印5,我没有看到调用println(5)
会打印 5 以外的值的情况!
解决方案
您可以通过将表达式替换为其结果来判断表达式是否具有副作用。如果程序改变了含义,就会产生副作用。例如,
println(5)
是一个不同的程序
()
也就是说,副作用是未编码在评估表达式的结果中的任何可观察到的效果。这里的结果是()
,但该值中没有任何内容可以编码 5 现在出现在屏幕上的某处这一事实。
推荐阅读
- c# - 登录时如何获取用户名并将其存储到数据库
- python - Python 设计问题:无法提前实例化依赖项时
- mysql - 如何在有 IN FUNCTION 的过程中设置输入参数?
- c++ - 如何在一个循环中遍历两个向量
- python - 如果'child'已经给出标签,如何提取xml中的元素?
- javascript - TypeError: Ok 不是构造函数
- linux - udev 规则不起作用,有人在我之前声称 iface
- omnet++ - 如何将数据包到达率和发送间隔设置为单独的参数
- foreach - 如何使用 SwiftUI 在 ScrollView 中选择一个项目?
- blazor - 无法制作嵌套组件