遍历
我们现在有了背包,如果要每行显示一个背包物品,我们可以:
var 背包 = ["水瓶", "钥匙", "金币"]
print("背包中有:")
print(背包[0]) # 显示:水瓶
print(背包[1]) # 显示:钥匙
print(背包[2]) # 显示:金币
很明显这样做只能显示背包的前三个物品,假设背包很大就不能这样写了。
此时结合之前的 while
语句和 len()
获取数组长度,可以改成下面这样:
var 背包 = ["水瓶", "钥匙", "金币"]
print("背包中有:")
var 下标 = 0
while 下标 < len(背包):
print(背包[下标])
下标 += 1
我们声明了一个变量下标,并在循环中通过这个下标从背包中取物品,同时给下标加一,这样就可以访问背包中的每个东西,直到 下标 < len(背包)
为 false
,也就是下标达到背包大小时停止。
[!tip]
注意不要写成
下标 <= len(背包)
,这里不能等于,因为背包的长度是 3,而背包[3]
是在获取第四个值,程序会出错。
for
上面这种把数组中每个元素都访问一次的行为被称为遍历,这种操作非常常见,于是有了一种专门为遍历而生的语法:
for <元素变量名> in <遍历目标>:
<代码块>
这个东西本质上还是个循环,循环次数就是遍历目标的长度,每一轮循环中,都将从遍历目标里取出一个元素放到元素变量中。
把之前的 while 换成 for
,运行结果不变,代码如下:
var 背包 = ["水瓶", "钥匙", "金币"]
print("背包中有:")
for 物品 in 背包:
print(物品)
for 后面的 物品
变量是自动创建的,不需要我们使用 var 声明。
range
有时候我们想直接指定循环次数,例如显示 50 个 hello,这样直接用一个变量和 while 也可以搞定,但我们可以结合 range
方法和 for
来实现同样的效果:
for 当前次数 in range(50):
print("Hello")
range
这个方法会根据括号里的数字产生一个数组,里面分别是 0、1、2、3、4...直到括号里的数字,但不包括那个数,也就是最后一个数字是 49。
不过 GDScript 还给咱们提供了一种简写方式,直接把 range(123)
写成 123
即可,例如和上面的 range(50)
效果相同的 for 可以写成 for 当前次数 in 50:
。