当前位置:  开发笔记 > 编程语言 > 正文

F#中关键字"in"的含义

如何解决《F#中关键字"in"的含义》经验,为你挑选了3个好方法。

我刚开始学习F#.在几个F#编码示例中,我看到以下列方式使用关键字"in":

let doStuff x =
    let first, second = x in
    first + " " + second

该功能在第二行的末尾使用和不使用"in"."in"有什么作用?



1> Mark Pim..:

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#light在F#源文件的开头指定


我不认为问题中的代码等同于`let doStuff x = x +""+ x`.我相信它相当于`let doStuff x =(fst x)+""+(snd x)`.我错了吗?

2> Tomas Petric..:

这是SO上的另一个相关主题,也可能有用:

F# - 我应该在有或没有#light的情况下学习吗?



3> Marc Gravell..:

从这里引用.

启用灯光语法选项时,"输入"是可选的.'let'定义的'='之后的标记开始一个新块,其中预解析器在每个'let'绑定之间插入一个隐式的分隔'in'标记,该绑定从该标记开始于同一列.

如果没有光语法选项,通常需要"输入".使用light syntac选项时,'in'是可选的.

所以我猜你正在使用轻量级语法.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有