F#入门-第二章 F#基础-第四节 let语句-值的绑定
这一节针对let语句进行说明。
let语句是变量赋值以及对变量进行函数定义的语句。
因为函数也可以用let语句来进行定义,所以let语句在F#中是十分重要的。
因为变量一旦赋了值就不能更改,所以在let语句中倒更象是常量定义。
let语句如下所示
let示例语句1
let num = 3;; //变量赋值 |
分别表示:
将数值3绑定给变量num。
将“传入的数值加1后返回”定义成函数绑定给变量inc。
关于函数,在下一节“let语句-函数定义”中做说明。
let示例语句2
let num2 = 3 in num2 + 4;; |
这里也同样如此,利用绑定的值进行计算,结果如下所示。
执行结果
> let num2 = 3 in num2 +4;; |
使用in的时候,in前面的变量值只在in的同一语句中有效。这个称之为变量的有效范围。
变量值的有效范围
let a = 10 in print_int a; //a是有效的 print_int a;; //因为只用;做了区分,仍在同一语句中,所以这里的a仍然有效。 |
变量值的有效范围被后面的let语句所覆盖。
被覆盖掉的变量范围内的变量值,在变量范围被覆盖时被隐藏起来。
变量范围的覆盖
let a = 10 in let a = 20 in print_int a;; |
执行这段代码后,最初的a的值10被隐藏,所以a的值显示为20。
同时,顶级的变量如果被第二次绑定,F#中被视为语法错误。
编译错误
let a = 1;; let a = 2;; →error: FS0037: Duplicate definition of value 'a' |
但是,为了方便起见,在解释器fsi中,并不视为错误。以上两句代码都可以正常执行。

浙公网安备 33010602011771号