我做的東西真的錯了基本的功能,但我不能,我的生活,工作,它是什麼?運行遞歸F#
let rec testItSeveralTimes (test, times) =
printfn "Iterations to go %O" times
match times with
| 0 ->()
| _ ->
test
testItSeveralTimes (test, (times - 1))
testItSeveralTimes ((printfn "Running a test"), 2)
我想到的是:
Iterations to go 2
Running a test
Iterations to go 1
Running a test
Iterations to go 0
Running a test
val it : unit =()
我得到的是:
Running a test
Iterations to go 2
Iterations to go 1
Iterations to go 0
val it : unit =()
好像功能被計算一次,一開始,然後忽略。 (Wrapping a function with an indeterminate number of parameters in F#)似乎有答案,但沒有。
我改成了這樣: 讓REC testItSeveralTimes(測試時間)= printfn「迭代走%氧氣」與 倍 比賽時間| 0 - >() | _ - > 試驗(+) testItSeveralTimes(測試(時間 - 1)) testItSeveralTimes((FUN _ - > printfn 「運行測試」),2) 和它的作品,但我不知道爲什麼。是否因爲test()強迫它被評估爲函數? –