这一行 F# 代码片段是什么意思
let x x = x + 2 in x 2;;
它是有效的,只返回 4。
但它是什么?是 xa 函数吗?它也是一个参数吗?x 似乎也在自称 (x 2) 但它没有标有“rec”。
谁能解释一下?
因此,让我们尝试了解会发生什么。
let x x
定义一个被调用的函数x
,它接受一个参数x
。
`let x x = x + 2`
意味着你有一个函数x
,它接受一个参数也被调用x
并返回x+2
最后一部分in x 2
调用参数为 2 的函数。
所以函数可以写成
let f x = x + 2
f 2
这显然返回 4。
'in' 表示它没有使用轻量级语法。基本上,这in
意味着为以下表达式定义了先前的绑定。由于in
关键字意味着 x 的绑定对以下表达式有效,因此另一种编写方式是替换x
为绑定的值,如下所示:
(fun x -> x + 2) 2
我认为重要的是要意识到所有绑定都以这种方式工作,即绑定是一种以更易于理解的方式编写表达式的方式。
如果你看这里,你可以了解更多关于更多类似 OCaml 的语法 F# 如果你已经#light off
指定(on
是默认值)。
let x x = x + 2 in x 2;;
x
通过将外部重命名为来消除变量的歧义f
:
let f x = x + 2 in f 2;;
缩进:
let f x =
x + 2
f 2
所以它定义了一个函数,将两个相加并将其应用于两个得到四个。