Cog
  • 首页
  • 导论
    • 脚本
    • 指令
  • 配方
    • 物品
    • 标签
    • 原版配方修改
    • 模组配方修改
    • 通用配方修改
    • 配方材料替换
  • ZenCode
    • 数据类型
    • 运算符
    • if
    • switch
    • 循环
    • 数组
    • List
    • 映射
    • 数学函数
    • 函数
    • lambda 表达式
    • 预处理器
    • OOP
      • 自定义类
      • 拓展类
      • 空类型安全
      • 运算符重载
      • 泛型
    • 变量代理
  • 高级运用
    • Tooltip
    • 属性修改
    • 物品条件
    • 物品转换器
    • 配方函数
    • 事件
    • 全局战利品修饰器
      • 战利品修饰器
      • 方块掉落修改
      • 实体掉落修改
      • 战利品修饰器管理器
  • ContentTweaker
    • 前言
    • 资源文件
    • 物品
    • 方块
    • 流体
    • 创造标签
    • 高级运用
由 GitBook 提供支持
在本页
  • Getter 函数
  • 代理类
  • 静态字段

这有帮助吗?

  1. ZenCode

变量代理

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 实例化这个类。

上一页泛型下一页Tooltip

最后更新于4年前

这有帮助吗?