繁体   English   中英

F#中关键字“in”的含义

[英]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

因为它是firstsecond是未绑定的 - 它们没有任何固定值 - 因此表达式目前没有具体价值。 通过使用

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM