强类型变量
我们之前定义的变量是没有限定类型的,这种变量中可以存放任意类型的值,例如下面代码:
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]
强类型语法只在声明变量的时候才用,给变量赋值的时候不能用!