Các giá trị của kiểu liệt kê
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 39 trên 78.
Mỗi tùy chọn trong enum đều là một int, nên bạn có thể so sánh các tùy chọn và tính toán với chúng:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
print(Day.FRIDAY) # 4
print(Day.SATURDAY > Day.FRIDAY) # true
print(Day.FRIDAY + 1) # 5Bản thân enum hoạt động giống như một từ điển ánh xạ tên với giá trị. keys() trả về các tên theo thứ tự, values() trả về các giá trị, còn size() trả về số lượng tùy chọn:
print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7Để in ra tên của một giá trị, hãy dùng giá trị đó làm chỉ số của keys(). Cách này hiệu quả khi các tùy chọn có giá trị mặc định 0, 1, 2... Với enum có các giá trị được chọn trước, hãy dùng find_key(), hàm này trả về tên của một giá trị:
var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAYVới enum Coin { COPPER = 1, SILVER = 10 } ở phạm vi toàn cục, Coin.keys()[10] vượt quá phạm vi, còn find_key() hoạt động:
print(Coin.find_key(10)) # SILVERĐể làm theo chiều ngược lại, từ tên được lưu dưới dạng văn bản sang giá trị của nó, hãy dùng dấu ngoặc vuông. Trước tiên, hãy kiểm tra tên bằng has(): tên không có trong enum sẽ gây lỗi.
var text := "FRIDAY"
if Day.has(text):
print(Day[text]) # 4for day_name in Day: lặp qua các tên, giống như một vòng lặp qua từ điển.
Thử thách
DễTập lệnh khai báo enum Day, từ MONDAY đến SUNDAY. Chương trình đọc hai dòng: tên một ngày viết hoa và một số ngày (số nguyên, từ 0 trở lên).
In ra hai dòng:
- Tên,
has the valuevà giá trị của ngày đó trong enum In, số ngày,days:và tên ngày sau đó tương ứng với số ngày ấy
Sau SUNDAY, tuần bắt đầu lại từ MONDAY. Với đầu vào FRIDAY và 3, đầu ra là:
FRIDAY has the value 4
In 3 days: MONDAYTự làm thử
extends Node
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
var day_name := OS.read_string_from_stdin()
var days := int(OS.read_string_from_stdin())
# In ra giá trị của ngày đó và ngày sau số ngày đã cho
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