Chapter 3 - 作用域

 

事实上,从这一节开始才真正讲到了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只要出了该函数的作用域,他也就会被自动回收,而且,他对于函数外的一切都是不可见的。

你可能感兴趣的:(作用域)