变量代理
ZenCode 取消了全局静态变量,然而 public
关键词只能用于类(和其的字段)和函数,不能用于变量。针对这个问题,本章使用「变量代理」来处理它。
变量代理不是 ZenCode 的特性,而是一个 tip
Getter 函数
我们可以添加一个函数,这个函数只返回这个变量。别的脚本调用这个函数来获取这个变量。
val foo as int = 123;
public function getFoo() as int {
return foo;
}
// 可以改成 lambda 表达式
public function getFoo() as int => foo;
// 调用这个全局函数
print(getFoo());
代理类
然而使用全局 getter 函数,可能会被脚本优先级所影响,且直接全局也显得不太优雅。我们也可以给一个类添加一个静态方法,来返回一个变量。
public class Proxy {
public static getFoo() as string => "foo";
}
// 调用
print(Proxy.getFoo());
静态字段
我们可以在代理类新建一个静态字段,这个字段可以随意修改。
public class Proxy {
public static var foo as int = 233; // 再提一遍,var 代表这个变量可以重新赋值,而 val 不能。
}
// get
print("variable foo: " + Proxy.foo);
// set
Proxy.foo = 333;
print("now, variable foo: " + Proxy.foo);
请注意,变量代理均使用静态字段和函数,所以不要用 new
实例化这个类。
最后更新于
这有帮助吗?