您的位置:首页 > 其它

F#入门-第二章 F#基础-第四节 let语句-值的绑定

2010-08-15 22:34 211 查看
    这一节针对let语句进行说明。
    let语句是变量赋值语句以及对变量进行函数定义语句。
    因为函数也可以用let语句来进行定义,所以let语句在F#中是十分重要的。
    (因为变量一旦赋了值就不能更改,所以在let语句中倒更象是常量定义。)
    let语句如下所示(省略了一部分)

let示例语句1 
let num = 3;;

let inc x = x + 1;;

    分别表示:
    将数值3绑定给变量num。
    将“传入的数值加1后返回”定义成函数绑定给变量inc。

    关于函数,在下一节“let语句-函数定义”中做说明。

let示例语句2
let num2 = 3 in num2 + 4;;

let square x = x * x in square 5;;

    这里也同样如此,利用绑定的值进行计算,结果如下所示。

执行结果 
> let num2 = 3 in num2 +4;;

val it : int = 7

> let square x = x * x in square 5;;

val it : int = 25

    使用in的时候,in前面的变量值只在紧跟在in后面的语句中有效。这个称之为变量的有效范围。

变量值的有效范围 
let a = 10 in

print_int a;          //a是有效的

print_int a;;        //因为只用;做了区分,仍在同一语句中,所以这里的a仍然有效。

let a = 10 in
print_int a;;          //a是有效的

print_int a;;         //这里的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中,并不视为错误。执行代码后特殊变量it仍然可以正常显示。

关于常州蓝博纺织机械有限公司的产品被常州蓝博节能设备有限公司非法假冒的声明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  f# 产品