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 提供支持
在本页
  • for 循环
  • while 循环
  • 增强 for 循环(foreach)
  • break 与 continue

这有帮助吗?

  1. 高级运用

循环与遍历

for 循环

for 循环允许一段代码多次执行,同时能增强脚本的可读性。

让我们看看一个普通 for 循环如何使用:


for i in 0 .. 10 { // 你可以使用 .. ,这是第一种方式
    print(i);
}

for i in 0 to 10 { // 你还可以使用 to ,这是另一种方式
    print(i);
}

// print() 函数都会被执行 10 次,同时依次输出: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9。
// 第一种书写和第二种书写没有区别,你可以任意选择

以上两个例子的执行结果都相同,其中:

i 是一个变量,每次循环结束,它的数值都会 +1。从 0 开始,直到 10 结束,但不包括 10。 每次循环都会执行大括号内的语句,你也可以写多条语句。

使用 for 循环来遍历一个数组:

var numbers as int[] = [2,4,8,16,32,64];
for i in 0 .. numbers.length {
    print(numbers[i]);
}
// 输出 2, 4, 8, 16, 32, 64

var items as IItemStack[] = [
    <minecraft:iron_ingot>,
    <minecraft:gold_ingot>,
    <minecraft:diamond>
];
for i in 0 .. items.length {
    print(items[i].displayerName);
}
// 输出 铁锭,金锭,钻石

while 循环

while 循环也可以多次执行代码,当小括号内的判断表达式为 true时,便会执行大括号内的语句,然后再次判断表达式,true则继续循环,false则不执行循环。

var i as int = 0;
while(i <= 10) {
    print(i);
    i = i + 1;
}
// print() 函数会执行 11 次,依次输出 i 为: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

var j as int = 10;
while(j >= 0) {
    print(j);
    j = j - 1;
}
// print() 函数会执行 11 次,依次输出 j 为:10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

增强 for 循环(foreach)

增强 for 循环用来遍历数组或集合,可读性高,不需要下标,遍历每一个元素。

// 定义一个数组并遍历
var numbers as int[] = [2, 4, 8];
for number in numbers {
    print(number);
}
// 输出 2, 4, 8

// 对于数组的 foreach,可以使用带下标的遍历法
for i, number in numbers {
    // i 变量为现在遍历到哪个下标下的元素
    print("Index: " + i + ", Element: " + number);
}

// 依次输出
// Index: 0, Element: 2
// Index: 1, Element: 4
// Index: 2, Element: 8

// 定义一个 Map (映射)并遍历
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-->四
}

break 与 continue

  • break与continue都可以在 for 循环和 while 循环中使用。

  • 执行到break语句后将直接结束当前循环。

for i in 0 .. 5 {
    if(i == 3) break; 
    print(i);
}
// i 等于 3 时,执行 break,结束循环
// 输出 0, 1, 2
  • 执行到continue语句后,跳出本次循环,并进入下一次循环。

for i in 0 .. 5 {
    if(i == 3) continue; 
    print(i);
}
// i 等于 3 时,执行 continue,跳出当前循环,并进入下一次循环
// 输出 0, 1, 2, 4, 5
上一页数组与集合下一页全局函数

最后更新于2年前

这有帮助吗?