Skip to content

数值转换与类型视图 ​

数值转换用于改变数值的表示方式。例如,把带小数的速度转换为整数,或把整数保存为一个 NBT 字节。

用函数转换数值 ​

toInt、toFloat、toByte、toShort、toLong 和 toDouble 接收数值,返回指定类型。

mcfpp
func main() {
    var speed = 3.75
    var whole = toInt(speed)
    var fraction = toFloat(whole)
    print(whole)
    print(fraction)
    print(toByte(128))
    print(toShort(65535))
}

结果依次为 3、3.0、-128 和 -1。浮点数转换为整数时向零取整。转换为 byte 或 short 时,超出的高位会被截去,结果按有符号整数解释。

long、double 与运行时浮点数之间的转换使用 Minecraft 26.3 的数值功能。为使用这些转换的工程设置 version = "26.3"。

用 as 创建类型视图 ​

as 让编译器用指定类型访问同一份存储。它适合联合类型、any 和容器视图。改变数值类型时使用上面的转换函数。

下面的 view 与 source 指向同一列表。通过 view 写入的值也能从 source 读到。

mcfpp
func main() {
    var source = [1, 2, 3]
    var view = source as list<int>
    view[0] = 9
    print(source[0])
}

普通赋值遵循值复制规则。比较下面的 copy:

mcfpp
func main() {
    var source = [1, 2, 3]
    var copy = source
    copy[0] = 9
    print(source[0])
}

这里输出 1。as 用于访问已经确定的实际类型。编译器根据这个类型继续生成代码,运行时的类型判断需要由程序明确完成。

转为 NBT ​

toNBT(value) 把数值、布尔值、字符串、NBT 数组或数据模板对象转换为 NBT 值。需要直接读写游戏数据时,继续阅读 NBTRef。