[英]Meaning of keyword “in” in F#
我刚开始学习F#。 在几个F#编码示例中,我看到以下列方式使用关键字“in”:
let doStuff x =
let first, second = x in
first + " " + second
该功能在第二行的末尾使用和不使用“in”。 “in”有什么作用?
in
是来自F#的OCaml根的宿醉,它指定了绑定变量,这些变量与变量范围略有不同。
考虑变量绑定如下; 你有一个表达式:
first + " " + second
因为它是first
和second
是未绑定的 - 它们没有任何固定值 - 因此表达式目前没有具体价值。 通过使用
let (...) in
语法是指定这些变量在该表达式中的绑定方式 ,因此您的示例将使用变量替换将该函数减少到
let doStuff x =
x + " " + x
在这个例子中,两个表单都是相同的,但想象如下:
let (x = 2 and y = x + 2) in
y + x
这不会起作用
let (x = 2 and y = x + 2)
y + x
因为在前一种情况下, x
仅绑定在 in
关键字之后。
在后一种情况下,正常的变量范围规则生效,因此变量在声明后立即生效。
希望这能说明问题。 通常,您应该始终使用不带的版本in
并在F#源文件的开头指定#light
这是SO上的另一个相关主题,也可能有用:
从这里引用。
启用灯光语法选项时,“输入”是可选的。 'let'定义的'='之后的标记开始一个新块,其中预解析器在每个'let'绑定之间插入一个隐式的分隔'in'标记,该绑定从该标记开始于同一列。
如果没有光语法选项,通常需要“输入”。 使用light syntac选项时,'in'是可选的。
所以我猜你正在使用轻量级语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.