So khớp với biến
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 6 trên 78.
Trong bài học Match Statement, mọi mẫu đều là giá trị cố định, như 1: hoặc "bow":. Mẫu cũng có thể là hằng số hoặc biến: match so sánh giá trị với giá trị mà tên đó giữ khi dòng lệnh chạy:
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!Mẫu mới thứ hai là mẫu liên kết: var theo sau là một tên mới. Giống như _, mẫu này khớp với mọi giá trị, đồng thời lưu giá trị đó vào biến mới, bạn có thể dùng biến này bên trong khối lệnh:
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is lockedMẫu liên kết hữu ích nhất khi bạn khớp kết quả của một biểu thức không có tên riêng:
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 10Mẫu binding khớp với mọi thứ, nên nó đứng cuối, như _. Tên của nó phải là tên mới: var level: trong ví dụ thứ hai sẽ gây lỗi vì level đã tồn tại. Mẫu này cũng không thể nằm cùng dòng với các mẫu khác được phân tách bằng dấu phẩy.
match so sánh kiểu dữ liệu một cách nghiêm ngặt: chuỗi "5" không khớp với mẫu 5, và số thực 5.0 cũng vậy. Hãy chuyển văn bản đọc từ đầu vào bằng int() trước khi so khớp với các số.
Thử thách
DễViết câu lệnh kiểm tra trò đoán số. Hằng số SECRET lưu số bí mật, còn chương trình đọc dự đoán của người chơi thành số nguyên vào guess.
Viết câu lệnh match cho guess với ba mẫu:
- Hằng số
SECRET: in raCorrect! 0: in raYou gave up.- Mẫu liên kết cho mọi dự đoán khác: in ra dự đoán theo sau bởi
is not the number.
Với đầu vào 17, đầu ra là:
17 is not the number.Tự làm thử
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# Viết câu lệnh match bên dưới
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