在查看 F#、Ocaml 和其他函数式语言代码示例时,我注意到 let 关键字的使用非常频繁。
最佳答案
在 F#(和 OCaml)中 let
是用于值绑定(bind)的非常强大的构造,这意味着为符号分配一些含义。这可能意味着各种各样的事情:
声明本地或全局值 - 您可以使用它来声明本地值。这类似于在命令式语言中创建变量,只是变量的值以后不能更改(它是不可变的):
let hello = "Hello world"
printfn "%s" hello
声明函数 - 你也可以用它来声明函数。在这种情况下,您指定一个符号是一个具有一定数量的函数:
let add a b = a + b
printfn "22 + 20 = %d" (add 22 20)
你为什么需要它? 在 F# 中,如果没有它,代码将是模棱两可的。您可以使用值隐藏来创建隐藏前一个符号(具有相同名称)的新符号,因此例如以下返回
true
:let test () =
let x = 10
let x = 20 // hides previous 'x'
x = 20 // compares 'x' with 20 and returns result
如果您省略了
let
关键字,您将不知道您是在比较值还是在声明一个新符号。此外,正如其他人所指出的,您可以使用 let <symbol> = <expression> in <expression>
语法(如果您在 F# 中使用换行符,则不需要 in
)将值绑定(bind)编写为另一个表达式的一部分:let z = (let x = 3 + 3 in x * x)
这里,
z
的值将是 36。尽管您可以发明一些不需要 let
的语法。关键字,我认为使用 let
只是使代码更具可读性。
关于f# - F# 和 OCaml 等函数式语言中的 "let"关键字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844047/