Kiểu liệt kê là gì?
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 37 trên 78.
Một số giá trị chỉ có thể thuộc một trong vài lựa chọn: đèn giao thông có màu đỏ, vàng hoặc xanh lá, còn người chơi có thể ở trạng thái nghỉ, đang chạy hoặc đang nhảy. Bạn có thể lưu lựa chọn dưới dạng số, với 0 là trạng thái nghỉ và 1 là đang chạy, nhưng khi đó mọi người đọc đều phải nhớ ý nghĩa của từng số:
var state := 1
if state == 1:
print("Running")enum (viết tắt của enumeration) đặt tên cho từng tùy chọn. GDScript đánh số các tên giúp bạn, bắt đầu từ 0:
enum State { IDLE, RUN, JUMP }Giờ bạn viết State.RUN thay vì 1: tên của enum, một dấu chấm và tùy chọn. Đoạn code cho biết ý nghĩa của nó:
var state := State.RUN
if state == State.RUN:
print("Running")Một enum được khai báo ở cấp cao nhất của tập lệnh, bên cạnh func _ready(): chứ không nằm bên trong hàm đó. Dòng enum bên trong một hàm sẽ gây lỗi và khiến chương trình dừng trước khi chạy:
extends Node
enum State { IDLE, RUN, JUMP }
func _ready():
var state := State.JUMP
print(state) # 2Các lựa chọn là hằng số, nên State.RUN = 5 gây ra lỗi. Tùy chọn viết sai chính tả như State.RUNN sẽ được báo lỗi trước khi chương trình chạy, còn một số không đúng như 3 thay cho 2 thì không bị phát hiện.
Thử thách
DễChương trình đọc một số nguyên từ 0 đến 3 đại diện cho thời tiết. Đặt tên cho các số bằng một enum và in ra một lời khuyên.
- Ở cấp cao nhất của tập lệnh, khai báo một enum có tên
Weathervới các lựa chọnSUNNY,CLOUDY,RAINYvàSNOWY, theo thứ tự này. - So sánh
weathervới các lựa chọn trong enum (không phải với các số) rồi in ra một dòng:
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.SNOWY:Build a snowman
Với đầu vào 2, đầu ra là:
Take an umbrellaTự làm thử
extends Node
# Khai báo enum Weather tại đây
func _ready():
var weather := int(OS.read_string_from_stdin())
# So sánh weather với các lựa chọn của enum rồi in ra lời khuyên
pass
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