Đ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: 15GDScript 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")HotMẫ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.
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đến12:Child - Từ
13đến19:Teenager - Từ
20đến64:Adult - Từ
65đến120: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à:
TeenagerTự 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ệ
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
1Chuyên sâu về chuỗi
Các phương thức của chuỗiTìm kiếm trong chuỗiThay thế và xóa khoảng trắngTách và nốiÔn tập: Kiểm tra tên người dùng7Kiểu liệt kê
Kiểu liệt kê là gì?Định nghĩa kiểu liệt kêCác giá trị của kiểu liệt kêKiểu liệt kê trong matchÔn tập: đèn giao thông10Hàm nâng cao
Trả về nhiều giá trịHàm lambda phần 1Hàm lambda phần 2Ôn tập: sắp xếp bằng lambdaHàm đệ quy phần 1Hàm đệ quy phần 2Ôn tập: tính tổng mảng lồng nhau13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Ra quyết định nâng cao
So khớp với biếnĐiều kiện bảo vệ trong so khớpMẫu mảngMẫu từ điểnKiểm tra thành viênÔn tập: Bộ phân tích lệnh5Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Mảng nhiều chiều
Cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập: mảng 2 chiềuMảng răng cưaCác mẫu phổ biến với mảng 2 chiềuÔn tập: bàn cờ6Tập hợp với từ điển
Tập hợp là gì?Từ điển như một tập hợpThêm và xóaHợp và giaoHiệu tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Tính tổng các giá trịTìm giá trị nhỏ nhất và lớn nhấtSắp xếp tùy chỉnhÔn tập: Sắp xếp từ điểnTự luyện tập: Trình biên dịch GDScript online