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