【发布时间】:2014-11-04 19:42:07
【问题描述】:
来自 OO 背景,当我试图避免突变时,我无法思考如何解决 FP 的简单问题。
let mutable run = true
let player1List = ["he"; "ho"; "ha"]
let addValue lst value =
value :: lst
while run do
let input = Console.ReadLine()
addValue player1List input |> printfn "%A"
if player1List.Length > 5 then
run <- false
printfn "all done" // daz never gunna happen
我知道在某些情况下使用突变是可以的,但我正在努力训练自己避免将突变作为默认值。话虽如此,有人可以给我看一个上面没有在 F# 中使用突变的例子吗?
最终的结果应该是player1List继续增长,直到item的长度为6,然后退出并打印'all done'
【问题讨论】:
-
顺便说一句:您的代码实际上不起作用。您需要
run <- false并且addValue应该改变player1List并存储新值(否则您只需打印它然后忽略它)。 -
谢谢,那是一种类型,我改为
标签: f# functional-programming mutation