Chapter 3 - 作用域
时间:2010-09-17 来源:兴说:
事实上,从这一节开始才真正讲到了F#的语法,以及一些build_in的函数之类的,
之前已经写了函数、值与标识符的定义,以及他跟我们适应的一些其他语言的区别。
这里就从作用域开始讲吧。
其实关于作用域,只需要了解一点就可以了,那就是在F#中,一切的作用域都只跟缩进有关,
而对于一个开发人员来说,最好能习惯使用空格来代替Tab,因为在不同的系统中甚至是不同的编辑器中,
对于Tab的定义是不一样的,可能你在这里运行的好好的,然后换了一个工具或是换了个平台,你想改上一两行,然后在编译或者是再解释(对于脚本语言来说,如Python)就出错了。
好,来两段代码解释下。
let printMessages() =
// 定义 message 并且打印
let message = "Important"
printfn "%s" message
//定义内嵌函数
let innerFun() =
let message = "Very Important"
printfn "%s" message
//执行内嵌函数
innerFun()
printfn "%s" message
printMessages()
输出我就写在这里了:
Important
Very Important
Import
由此可以看出innerFun外的message对于内嵌的函数innerFun来说是不可见的,对于innerFun来说,message只不过是他自己重新定义的一个标识符而已。而在innerFun中定义的message只要出了该函数的作用域,他也就会被自动回收,而且,他对于函数外的一切都是不可见的。
相关阅读 更多 +