Menu
CoddyTech

Điều kiện bảo vệ trong so khớp

Thuộc phần Logic và luồng chương trình trong hành trình GDScript của Coddy. Bài học 7 trên 78.

Guard thêm một điều kiện vào mẫu. Viết when và một điều kiện sau mẫu: mẫu chỉ khớp nếu giá trị phù hợp với mẫu và điều kiện là true. Guard có từ Godot 4.4.

var hp := 15
match hp:
	0:
		print("Defeated")
	var h when h < 20:
		print("Low health: ", h)
	_:
		print("Healthy")
Low health: 15

GDScript không có mẫu phạm vi như 1..10. Mẫu liên kết có điều kiện bảo vệ đảm nhiệm việc đó: var h when h < 20: khớp với mọi giá trị nhỏ hơn 20 và đặt tên cho giá trị đó là h.

Khi guard là false, match sẽ chuyển sang mẫu tiếp theo. Các mẫu được thử từ trên xuống dưới, vì vậy thứ tự quyết định khối lệnh nào chạy:

var temp := 32
match temp:
	var t when t <= 0:
		print("Freezing")
	var t when t < 15:
		print("Cold")
	var t when t < 30:
		print("Warm")
	_:
		print("Hot")
Hot

Mẫu thứ hai không cần t > 0: nhiệt độ bằng 0 hoặc thấp hơn đã khớp với mẫu đầu tiên. Một điều kiện bảo vệ có thể dùng bất kỳ điều kiện nào, cùng với các biến khác và and hoặc or, và có thể áp dụng cho bất kỳ mẫu nào: 5 when hard_mode: chỉ khớp với 5 khi hard_mode là true.

challenge icon

Thử thách

Dễ

Chương trình đọc một số tuổi dưới dạng số nguyên vào age. Dùng câu lệnh match với các guard để in ra nhóm tuổi:

  • Từ 0 đến 12: Child
  • Từ 13 đến 19: Teenager
  • Từ 20 đến 64: Adult
  • Từ 65 đến 120: Senior
  • Bất kỳ số nào khác: Invalid age

Mỗi khoảng đều bao gồm cả hai đầu mút. Với đầu vào 15, đầu ra là:

Teenager

Tự làm thử

extends Node

func _ready():
	var age := int(OS.read_string_from_stdin())
	# In ra nhóm tuổi bằng match và các điều kiện bảo vệ
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch GDScript online