这是本文档旧的修订版!
Covariant Script 作用域和命名空间
4.1 定义(definition)
block 语句块 end
定义一个临时作用域
定义一个命名空间
命名空间中只允许引入其他命名空间,变量定义,函数定义,类型定义以及命名空间定义
using 命名空间名
引入一个命名空间,这将会在当前作用域中建立引入的命名空间中所有变量的引用
4.2 名称查找
变量名
从最上层作用域开始向下查找变量
local.变量名
查找当前作用域中的变量
global.变量名
查找全局作用域中的变量
命名空间名.变量名
查找命名空间中的变量
变量名.变量名
查找结构体或扩展中的变量
作用域结构以及变量查找方式如图所示
注意,对于最后一种访问方法,仅变量类型为结构或支持扩展的类型时可用,如访问的是扩展或结构中的函数,将会自动把点运算符左边的变量作为函数的第一个参数传入。
也就是说:char.isspace(ch) 等价于ch.isspace()
除此之外,支持扩展的类型将自动调用无参数的成员访问函数(无需填写任何参数)
也就是说:string.size(str)等价于 str.size
这种“域下静态函数转成员”(函数/变量)的行为我们称之为“成员访问器”(number visitor)
也就是说:char.isspace(ch) 等价于ch.isspace()
除此之外,支持扩展的类型将自动调用无参数的成员访问函数(无需填写任何参数)
也就是说:string.size(str)等价于 str.size
这种“域下静态函数转成员”(函数/变量)的行为我们称之为“成员访问器”(number visitor)