从面向对象的背景来看,我很难包装我的头,试图避免突变时如何解决FP的简单问题。在这个例子中避免突变在F#
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#中的变异的上述w/o的例子吗?
最终的结果应该是player1List继续增长,直到物品的长度6,然后退出,并打印“全部完成”
顺便说一句:你的代码实际上不工作。你需要'run < - false',并且'addValue'应该改变'player1List'并存储新的值(否则你只是打印它然后忽略它)。 – 2014-09-11 02:12:53
谢谢,这是一种类型,我改为< - ... addValue的意思是这样的例子,因为我的目标是避免突变。 – schmoopy 2014-09-11 02:17:54