强类型变量

我们之前定义的变量是没有限定类型的,这种变量中可以存放任意类型的值,例如下面代码:

var a = 10
a = "Hello"
a = false

变量 a 依次存放了数字 10、字符串 Hello、布尔值 false,也就是说 a 变量是不限定类型的。

这样的变量简单易懂,但说实话,并不易用。

绝大多数变量都应该只存储一种类型的数据,例如存放玩家名称的变量,肯定永远存放字符串,玩家生命值变量,肯定永远存放数字。

在定义变量时,在变量名后加上冒号和类型来明确变量类型,例如:

var 生命值: int = 100
var 玩家名: String = "Rika"

这种变量是不能存放其他类型的数据的,例如 生命值 = "满血" 这样的代码就会出错,因为 生命值 变量是 int 类型的,不能存放字符串。

[!tip] 什么叫“强类型”

可以把强类型理解成强制类型,就是强制要求变量只能存放某种类型的值,与之对应的就是弱类型,也就说不加 : 类型名 这样的变量。

推导类型

每次都加上一个冒号和类型会比较麻烦,所以 GDScript 提供了一种语法::=,用法如下:

var 玩家生命值 := 100     # 等于 玩家生命值: int
var 玩家名称 := "Rika"    # 等于 玩家名称: String

使用 := 符号后,GDScript 会根据右侧的变量初始值推断类型,例如例子中的 玩家生命值 变量,由于初始值是个 int 类型的 100,所以这个变量就是 int 类型的。

这个语法要求变量必须有初始值,毕竟 GDScript 需要根据初始值才能去推导变量的类型。

[!tip] 强类型有什么用?

看似使用强类型会比较麻烦,但强类型能显著减少我们写代码时的犯错概率,原理就不解释了,大家继续学习就能体会到。

[!note]

强类型语法只在声明变量的时候才用,给变量赋值的时候不能用!