差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
wiki:reference:grammar:namespace:main_page [2021/06/19 21:27] mikecovleewiki:reference:grammar:namespace:main_page [2021/06/19 21:56] (当前版本) mikecovlee
行 1: 行 1:
 +====== Covariant Script 作用域和命名空间 ======
 +-----
 +\\
  
 +===== 4.1 定义(definition) =====
 +
 +<code python>
 +block
 +  语句块
 +end
 +</code>
 +\\
 +
 +
 +=====  定义一个临时作用域 =====
 + 
 +临时作用域中的变量会在离开作用域后销毁
 +
 +<code csharp>
 +namespace 命名空间名
 +  语句块
 +end
 +</code>
 +\\
 +
 +==== 定义一个命名空间 ====
 +
 +命名空间中只允许引入其他命名空间,变量定义,函数定义,类型定义以及命名空间定义
 +
 +<code csharp>
 +using 命名空间名
 +</code>
 +
 +引入一个命名空间,这将会在当前作用域中建立引入的命名空间中所有变量的引用
 +-----
 +\\
 +
 +
 +===== 4.2 名称查找 =====
 +
 +==== 变量名 ====
 +
 +=== 从最上层作用域开始向下查找变量 ===
 +
 +<code java>
 +local.变量名
 +</code>
 +\\
 +
 +=== 查找当前作用域中的变量 ===
 +
 +<code python>
 +global.变量名
 +</code>
 +\\
 +
 +=== 查找全局作用域中的变量 ===
 +
 +<code java>
 +命名空间名.变量名
 +</code>
 +\\
 +
 +=== 查找命名空间中的变量 ===
 +
 +<code java>
 +变量名.变量名
 +</code>
 +\\
 +
 +=== 查找结构体或扩展中的变量 ===
 +
 +作用域结构以及变量查找方式如图所示
 +
 +{{:wiki:reference:grammar:namespace:r4.2.png?nolink&400|}}
 +
 +<html>
 +<div style=" border-style: solid; border-color: #d1f4ff; background-color: #ecfcff; border-width: medium; border-radius: 3px; padding: 12px;">
 +
 +<b>注意</b>,对于最后一种访问方法,仅变量类型为结构或支持扩展的类型时可用,如访问的是扩展或结构中的函数,将会自动把点运算符左边的变量作为函数的第一个参数传入。<br>
 +也就是说:<b>char.isspace(ch)</b> 等价于<b>ch.isspace()</b><br>
 +除此之外,支持扩展的类型将自动调用无参数的成员访问函数(无需填写任何参数)<br>
 +也就是说:<b>string.size(str)</b>等价于 <b>str.size</b><br>
 +这种<b>“域下静态函数转成员”</b>(函数/变量)的行为我们称之为<b>“成员访问器”</b>(number visitor)<br>
 +</div>
 +</html>