使用变量进行匹配
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 6 课,共 78 课。
在匹配语句这一课中,每个模式都是字面值,比如 1: 或 "bow":。模式也可以是常量或变量:match 会将值与运行该行代码时这个名称所代表的值进行比较:
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!第二种新模式是绑定模式:var 后面跟一个新名称。和 _ 一样,它可以匹配任何值,还会把该值存储到新变量中,你可以在它所在的代码块中使用这个变量:
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is locked当你匹配一个表达式的结果时,绑定模式最有用,因为表达式本身没有名称:
var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
12:
print("Double six!")
var total:
print("You rolled ", total)You rolled 10绑定模式可以匹配所有内容,因此要放在最后,就像 _ 一样。它的名称必须是新的:在第二个示例中使用 var level: 会导致错误,因为 level 已经存在。它也不能与其他用逗号分隔的模式写在同一行。
match 会严格比较类型:字符串 "5" 与模式 5 不匹配,浮点数 5.0 也不匹配。先用 int() 将从输入中读取的文本转换为整数,再将它与数字进行匹配。
挑战
简单编写一个数字猜测检查程序。常量 SECRET 保存秘密数字,程序将玩家猜测的数字读取为整数并存入 guess。
针对 guess 编写一个 match 语句,包含三个模式:
- 常量
SECRET:打印Correct! 0:打印You gave up.- 对其他任何猜测都匹配的绑定模式:打印猜测的数字,后面跟着
is not the number.
输入 17 时,输出为:
17 is not the number.亲手试试
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# 在下方编写 match 语句
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器