我只是想通过浏览Wikibook来学习一些F#:https://en.wikibooks.org/wiki/F_Sharp_Programming/
请考虑以下示例: https://en.wikibooks.org/wiki/F_Sharp_Programming/Mutable_Data
open System
let withSideEffects x =
x := "assigned from withSideEffects function"
let refTest() =
let msg = ref "hello"
printfn "%s" !msg
let setMsg() =
msg := "world"
setMsg()
printfn "%s" !msg
withSideEffects msg
printfn "%s" !msg
let main() =
refTest()
Console.ReadKey(true) |> ignore
main()
我意识到他们在每个有副作用的功能之后放了()。删除大括号可以很好地编译并从单位更改类型 - >单位到单位。
问题:
答案 0 :(得分:1)
将()
添加到绑定会将其从立即执行的块更改为接受unit
的函数,其中返回值绑定到标识符(在本例中为unit
)并返回unit
(写作unit -> unit
)。
这样做的好处是延迟执行并且可以执行多次。这可能是抽象出副作用的有用方法,但它只是您日常工具包中可以使用的语言的简单属性。你可能会过度思考它。