Menu
CoddyTech

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) # 2

Cá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.

challenge icon

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.

  1. Ở cấp cao nhất của tập lệnh, khai báo một enum có tên Weather với các lựa chọn SUNNY, CLOUDY, RAINY và SNOWY, theo thứ tự này.
  2. So sánh weather vớ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 sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

Với đầu vào 2, đầu ra là:

Take an umbrella

Tự 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
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch GDScript online