我刚开始学习F#.在几个F#编码示例中,我看到以下列方式使用关键字"in":
let doStuff x =
let first, second = x in
first + " " + second
Run Code Online (Sandbox Code Playgroud)
该功能在第二行的末尾使用和不使用"in"."in"有什么作用?
Mar*_*Pim 35
in是来自F#的OCaml根的宿醉,它指定了绑定变量,这些变量与变量范围略有不同.
考虑变量绑定如下; 你有一个表达式:
first + " " + second
Run Code Online (Sandbox Code Playgroud)
因为它是站立的first并且second是未绑定的 - 它们没有任何固定值 - 因此表达式目前没有具体价值.通过使用
let (...) in
Run Code Online (Sandbox Code Playgroud)
语法是指定这些变量在该表达式中的绑定方式,因此您的示例将使用变量替换将该函数减少到
let doStuff x =
x + " " + x
Run Code Online (Sandbox Code Playgroud)
在这个例子中,两个表单都是相同的,但想象如下:
let (x = 2 and y = x + 2) in
y + x
Run Code Online (Sandbox Code Playgroud)
这不会起作用
let (x = 2 and y = x + 2)
y + x
Run Code Online (Sandbox Code Playgroud)
因为在前一种情况下x只能被绑定后的in关键字.
在后一种情况下,正常的变量范围规则生效,因此变量在声明后立即生效.
希望这能说明问题.通常,您应始终使用不带 的版本,in并#light在F#源文件的开头指定