Kiểu liệt kê trong match
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 40 trên 78.
Câu lệnh match có thể so sánh một giá trị với các tùy chọn của enum. Mỗi mẫu là một tùy chọn, được viết kèm tên enum:
enum Light { RED, YELLOW, GREEN }
func _ready():
var light := Light.YELLOW
match light:
Light.RED:
print("Stop")
Light.YELLOW:
print("Slow down")
Light.GREEN:
print("Go")Lệnh này in ra Slow down. Như trong mọi câu lệnh match, nhiều lựa chọn có thể dùng chung một nhánh, ngăn cách bằng dấu phẩy, còn _ sẽ bắt mọi trường hợp còn lại:
match light:
Light.RED, Light.YELLOW:
print("Wait")
_:
print("Go")Hàm (function) trả về một giá trị cần có return trên mọi nhánh. Ngay cả khi các nhánh bao quát mọi lựa chọn, GDScript vẫn báo Not all code paths return a value trừ khi match có nhánh _ hoặc có câu lệnh return theo sau:
func next_light(light: Light) -> Light:
match light:
Light.RED:
return Light.GREEN
Light.GREEN:
return Light.YELLOW
_:
return Light.REDTham số và kiểu trả về là enum Light. Hàm được khai báo ở cấp cao nhất, giống như enum.
Thử thách
DễTập lệnh khai báo enum State với các tùy chọn IDLE, WALK, RUN, JUMP và FALL. Hoàn thành hàm describe(): hàm nhận một trạng thái và trả về mô tả của trạng thái đó, được chọn bằng match:
State.IDLE:"Standing still"State.WALKvàState.RUN:"Moving"State.JUMPvàState.FALL:"In the air"
Dùng một nhánh cho WALK và RUN, và một nhánh cho JUMP và FALL. Code đã cho trong _ready() đọc một dòng chứa tên các trạng thái rồi in ra từng tên cùng với mô tả tương ứng. Với đầu vào IDLE RUN FALL, đầu ra là:
IDLE: Standing still
RUN: Moving
FALL: In the airTự làm thử
extends Node
enum State { IDLE, WALK, RUN, JUMP, FALL }
func describe(state: State):
# Trả về mô tả của trạng thái bằng match
pass
func _ready():
var names := OS.read_string_from_stdin().split(" ", false)
for state_name in names:
print(state_name, ": ", describe(State[state_name]))
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