类型化数组
本课属于 Coddy GDScript 学习旅程的“基础知识”单元。第 68 课,共 92 课。
普通数组可以接受任意类型的值。类型化数组只接受一种类型,写在 Array 后面的方括号中:
var scores: Array[int] = [90, 85, 77]
var players: Array[String] = ["Ana", "Ben"]
var bonuses: Array[int] = []GDScript 会检查每个值。方括号中的值如果类型不正确,会在程序运行前报告错误:
var scores: Array[int] = [90, "high"] # 错误:"high" 不是 int 类型程序运行时添加类型错误的值也会导致错误,而且该值不会被添加:
var scores: Array[int] = [90, 85]
var bonus = "ten"
scores.append(bonus) # 错误,scores 仍是 [90, 85]使用 := 进行类型推断不会创建类型化数组:var scores := [90, 85] 是普通的 Array。要创建类型化数组,请写 Array[int]。
由于类型化数组知道其元素类型,var best := scores[0] 会推断出 int。对于普通数组,同一行会报错,因为其中的元素可以是任意类型。
类型化数组和普通数组具有相同的索引和方法,print(scores) 显示它们的方式也相同:[90, 85]。
挑战
简单程序从输入中读取一个数量,然后读取相应数量的分数,每行一个。
- 将
scores声明为空的整型数组 - 读取每个分数,用
int()转换并将其追加到scores - 打印
scores,然后打印Best:,后面跟着最高分
对于下面的输入,输出为:
3
70
95
88[70, 95, 88]
Best: 95亲手试试
extends Node
func _ready():
var count := int(OS.read_string_from_stdin())
# 1. 声明 scores,将其设为一个空的 int 类型数组
# 2. 读取 count 个分数,依次追加到 scores
# 3. 输出 scores,然后输出 "Best: " 和最高分
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: GDScript 在线编译器