Nig*_*rne 6 functional-programming immutability
我正在研究函数式编程并且在一点上苦苦挣扎.如何在没有可变状态的情况下执行以下操作?
想象一下,我有一个服务器..并且客户端尝试连接..并且每个客户端为服务器提供一个数字并告知当前总数.
现在没有可变状态,服务器无法保持总数......所以我认为每个客户端实际上都在创建一个包含新总数的新服务器..或者一个新服务器,其中包含该条目并引用旧服务器,因此总数可以是计算.
但是..客户端如何找到服务器?有人必须抓住当前的服务器实例..所以他们有一个可变的变量'server'.
无论我做什么..我总是以一个可变变量结束更高的范围.
思考?
您描述的场景可以像这样实现(伪代码):
let keepTrackOfTotal(total) =
let conn = waitForConnection()
let x = readIntFrom(conn)
let newTotal = total + x
writeIntTo(conn, newTotal)
keepTrackOfTotal(newTotal)
let main() = keepTrackOfTotal(0)
Run Code Online (Sandbox Code Playgroud)
在这里,我们使用递归来获得一个跟踪总数的无限循环,没有可变变量.