Menu
CoddyTech

Kiểu hợp

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 33 trên 80.

Đôi khi một kiểu dữ liệu là chưa đủ. ID người dùng có thể đến dưới dạng "user123" hoặc 42. Trong Lua thuần, bạn chỉ có thể hy vọng mọi chuyện ổn thỏa; Luau cung cấp cho bạn kiểu hợp (union type): dấu gạch đứng | có nghĩa là "hoặc":

local userId: number | string

userId = "user123"  -- ✓ chuỗi được chấp nhận
userId = 42          -- ✓ số được chấp nhận
userId = true        -- ✗ lỗi kiểu dữ liệu: boolean không thuộc kiểu hợp

Biến có thể chứa một trong hai thành viên của kiểu hợp, và chỉ những thành viên đó. Đây là điểm khác biệt cốt yếu so với any: kiểu hợp vẫn giới hạn chặt chẽ những gì được phép, đồng thời cho bạn sự linh hoạt cần thiết.

Kiểu hợp đặc biệt hữu ích với tham số hàm (function) chấp nhận nhiều định dạng đầu vào:

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- Chạy được với một số
printId("user123")   -- Chạy được với một chuỗi (string)

Bạn đã biết string?. Đó là kiểu hợp đầu tiên của bạn! Đây chỉ là cách viết tắt của string | nil. Trong bài học tiếp theo, bạn sẽ học cách làm việc an toàn với một giá trị kiểu hợp sau khi đã có nó.

challenge icon

Thử thách

Dễ

Chấp nhận một giá trị là số hoặc chuỗi.

  1. Viết local function printId(id: number | string): () để in ra id.
  2. Khai báo local status: string | number = "active".
  3. Gọi printId(7) và printId("player7"), sau đó gán status = 200 rồi in ra giá trị đó.

Nhấn Chạy mã: đầu ra hiển thị 7, player7 và 200.

Tự làm thử

-- 1) printId(id: number | string): ()
-- 2) local status: string | number = "active"
-- 3) Gọi printId(7) và printId("player7"), gán status bằng 200, rồi in status ra

Tất cả bài học trong Giới thiệu về Luau

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