Skip to content

只读列表、NBT 数组与范围 ​

通过只读视图访问列表 ​

ImmutableList<T> 提供读取、查找和遍历操作。它适合声明只需要读取列表的函数参数。

mcfpp
func first(values: ImmutableList<int>): int {
    return values[0]
}

func main() {
    var source = [2, 4, 6]
    var view = source as ImmutableList<int>
    print(first(view))
    print(view.contains(4))
}

as 创建共享存储的只读视图。source 仍然可以修改列表,view 会读到这些变化。只读约束作用于列表本身,元素若为可变对象,仍有各自的修改规则。

使用 Minecraft NBT 数组 ​

NBT 数组保存固定的整数种类,使用 B、I 或 L 标记。

mcfpp
func main() {
    var bytes = [B; 1b, 2b, 3b]
    var numbers = [I; 10, 20, 30]
    var longs = [L; 1L, 2L, 3L]
    print(bytes)
    print(numbers)
    print(longs)
}

对应类型为 ByteArray、IntArray 和 LongArray。游戏数据要求这些 NBT 类型时,使用相应数组字面量。通用的可变序列使用 list<T>。

遍历整数范围 ​

mcfpp
func main() {
    for (index: 1..3) {
        print(index)
    }
}

范围包含两端。这个循环依次输出 1、2 和 3。边界也可以使用整数变量。循环开始时确定边界,之后按范围推进。循环体内的 index 是当前迭代值。