玩F#,看来我找不到错误所在。
FS0003该值不是函数,不能应用。你是否 忘记终止声明?
蒸发器25.0 10.0 10.0
let evaporator (volumeMl:double) (evapPerDaydouble:double) (threshold:double):int =
let mutable counter = 0
let mutable currentVolume = volumeMl
while (currentVolume > (volumeMl * (threshold / 100.))) do
currentVolume <- currentVolume - ((currentVolume * threshold / 100.))
counter <- (counter + 1)
counter
let result = evaporator 25.0 10.0 10.0
printfn "%f" result
更新
使用;;
let result = evaporator 25.0 10.0 10.0;;
它正在按预期方式工作。奇怪。
更新2
答案 0 :(得分:4)
初始代码的唯一问题是您使用的是printfn "%f"
而不是printfn "%i"
。
如果通过添加;;
解决了您的问题,那么我认为您正在FSI中运行它,并在FSI中看到了编译器错误。很好,但是也许您是直接在FSI提示符下键入或粘贴代码?
我对所有以F#开始的人,甚至是经验丰富的F#用户,都建议从不键入或粘贴代码到FSI。在编辑器中编写代码,选择它,然后将其发送给FSI。这样,您不必担心记住分号,并且在键入时会得到编译器错误和建议。我已经在F#中工作了很多年,而无需直接输入FSI。
此外,如果更改它们,请不要忘记在FSI中重新运行所有函数和类型定义。如果您看到令人困惑的错误,最好重置FSI并从干净状态开始。