Menu
CoddyTech

类型化数组

本课属于 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]。

challenge icon

挑战

简单

程序从输入中读取一个数量,然后读取相应数量的分数,每行一个。

  1. 将 scores 声明为空的整型数组
  2. 读取每个分数,用 int() 转换并将其追加到 scores
  3. 打印 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: " 和最高分
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: GDScript 在线编译器