Covariant Script 作用域和命名空间

block
  语句块
end


临时作用域中的变量会在离开作用域后销毁

namespace 命名空间名
  语句块
end


命名空间中只允许引入其他命名空间,变量定义,函数定义,类型定义以及命名空间定义

using 命名空间名

引入一个命名空间,这将会在当前作用域中建立引入的命名空间中所有变量的引用



从最上层作用域开始向下查找变量

local.变量名


查找当前作用域中的变量

global.变量名


查找全局作用域中的变量

命名空间名.变量名


查找命名空间中的变量

变量名.变量名


查找结构体或扩展中的变量

作用域结构以及变量查找方式如图所示

注意,对于最后一种访问方法,仅变量类型为结构或支持扩展的类型时可用,如访问的是扩展或结构中的函数,将会自动把点运算符左边的变量作为函数的第一个参数传入。
也就是说:char.isspace(ch) 等价于ch.isspace()
除此之外,支持扩展的类型将自动调用无参数的成员访问函数(无需填写任何参数)
也就是说:string.size(str)等价于 str.size
这种“域下常规函数转成员函数”(函数/变量)的行为我们称之为“成员访问器”(Member Visitor)