Zentutorial
  • 首页
  • Zenscript
  • 简单运用
    • 局部变量
    • 尖括号调用
    • 工作台合成
      • 添加配方
      • 移除配方
      • Metadata
      • NBT
    • 熔炉配方
    • 矿物词典(Ore Dictionaries)
    • 物品名称修改
    • tooltips
      • 样式代码
    • 物品条件
    • 物品转换器
    • 掉落物
      • 打草掉落物
      • 生物掉落物
      • Dropt - 导言
        • Dropt - 方法速查
        • Dropt - 使用示例
    • 战利品表 : 导论
      • 战利品表修改(LootTableTweaker)
      • 战利品表修改(LootTweaker-基础)
    • 循环语句(foreach循环) / 普通数组
  • 高级运用
    • 概论
      • 基本类
      • ZenGetter
      • ZenSetter
      • ZenMethod(方法)
    • 常见错误
    • 基本运算
    • 数组与集合
    • 循环与遍历
    • 全局函数
    • Math包
    • if
    • in/has 操作符
    • 战利品表修改(LootTweaker-进阶)
    • 三元操作符
    • 预处理器
    • 全局和静态变量
    • 跨脚本引用
    • 关联数组(映射)
    • IItemStack类型的重新认识
    • IIngredient接口
    • IItemDefinition & IBlockDefinition
    • IData 类型
      • DataMap
    • 穷举与遍历
    • 自定义函数
    • 配方函数与配方事件
      • 配方函数
      • 配方事件
    • 事件概论
      • 一些忠告
    • ZenClass
  • ContentTweaker
    • ContentTweaker
    • 指令
    • 原版加工厂
      • 概论
      • 物品
      • 方块
      • 流体
      • 创造标签
      • 食物
    • 材料系统
      • 基础用法
        • 材料
        • 部件
        • 注册材料部件
        • 材料部件信息
      • 高级运用
        • 自定义部件类型
        • 注册自定义部件
        • 自定义材料部件信息
    • 高级运用
    • 更多鸡联动
    • 匠魂联动
      • 材料引导
        • 材料
        • 构建材料
      • 特性引导
        • 特性
        • 构建特性
        • 特性数据
      • 高级运用
  • 实战
    • 配方
      • 数据驱动合成修改
    • 事件
      • 修改方块掉落物
      • 禁止开创造
由 GitBook 提供支持
在本页
  • 定义与访问
  • 修改
  • 遍历
  • Set 与 Entry

这有帮助吗?

  1. 高级运用

关联数组(映射)

Map 是集合的一种,也称作映射、关联数组等。特点是存储的数据为键值对(Key-Value),key(键)和 value(值)一一对应。

  • Map 没有下标,取代下标的是 key(键)

  • 你可以用 ZenScript 的任何类型作为 key

  • 键值对的形式为 key: value,键在前,值在后

  • 不可使用变量作为 key,变量名会被解释为字符串

  • 数组可以作为 value,但不可以作为 key

当然如果你的映射只是为了遍历就不用担心这个了。

定义与访问

// 定义一个 Map 集合,key 为 int 类型,value 为 string 类型
var map1 as string[int] = {
    1 : "一",
    2 : "二",
    3 : "三"
};

// 通过 2 来访问 map1 中的 二, 输出 二
print(map1[2]);

// 定义一个 Map 集合,key 为 string 类型,value 为 IItemStack 类型
var map2 as IItemStack[string] = {
    gold : <minecraft:gold_ingot>,
    iron : <minecraft:iron_ingot>,
    diamond : <minecraft:diamond>
};

// 通过 iron 来访问 map2 中的 <minecraft:iron_ingot>
print(map2["iron"].displayName);

// 特别的,key 为 string 类型时可以通过点来访问 value
print(map2.iron.displayName);

修改

你可以修改一个键对应的值,也可以给 Map 添加新的键值对。

var map as string[int] = {
    1 : "一",
    2 : "二",
    3 : "三",
};

map[1] = "one"; // 修改
map[2] = "two"; // 修改
map[3] = "three"; // 修改
map[4] = "four"; // 添加
map[5] = "five"; // 添加

遍历

可以通过增强 for 循环来遍历一个 Map 中的 key , key-value 和 entry。

var map as string[int] = {
    1 : "一",
    2 : "二",
    3 : "三",
    4 : "四"
}

// key 遍历法
for key in map {
    print(key); // 输出 1, 2, 3, 4
}

// key-value 遍历法
for key, value in map {
    print(key ~ "-->" ~ value); // 输出 1-->一, 2-->二, 3-->三, 4-->四
}

// entry 遍历法
for entry in map.entrySet {
    print(entry.key ~ "-->" ~ entry.value); // 输出 1-->一, 2-->二, 3-->三, 4-->四
}

Set 与 Entry

keySet, valueSet, entrySet

map.keySet   // Returns the map's keySet.
map.keys     // Returns the map's keySet.
map.values   // Returns the map's valueSet.
map.valueSet // Returns the map's valueSet.
map.entrySet // Returns the map's entrySet.

entry.key;   // Returns the entry's key.
entry.value; // Returns the entry's value.
上一页跨脚本引用下一页IItemStack类型的重新认识

最后更新于3年前

这有帮助吗?