我刚开始学习F#.本书使用以下符号:
let name() = 3
name()
Run Code Online (Sandbox Code Playgroud)
与此不同的是:
let name = 3
name
Run Code Online (Sandbox Code Playgroud)
?
如果我这样定义一个模块:
module Module1
open System
let foo =
Console.WriteLine("bar")
Run Code Online (Sandbox Code Playgroud)
然后,在互动中做
#load "Library1.fs" //where the module is defined
open Module1
Run Code Online (Sandbox Code Playgroud)
我看到了
[正在加载c:\ users\jj\documents\visual studio 2015\Projects\Library1\Library1\Library1.fs]栏
指示foo函数在没有我的情况下运行甚至调用它!
这是怎么发生的?有什么方法可以预防吗?
我知道foo的返回值是什么(Console.Writeline("bar"))评估,并且没有任何原因无法立即评估?(当我加载模块时?) - 但有没有办法阻止它发生?如果我的模块功能改变了其他一些东西的状态,我可以确保它们在被调用之前不进行评估吗?