Bảng liệt kê trong Swift

Tram Ho

Enumerations

Enum định nghĩa kiểu chung cho 1 nhóm các giá trị liên quan và cho phép bạn làm việc với những giá trị này một cách an toàn trong code.

Cú pháp

Khai báo tương tự như khái báo class hay struct, bắt đầu với enum sau đó đặt tên cho enum vào cuối cùng là cặp ngoặc nhọn:

Ví dụ enum về 4 hướng chính của một cái la bàn:

Các giá trị được định nghĩa trong một enum (north, south, east và west) là những case trong một enum . Sử dụng từ khoá case để thêm một giá trị mới vào enum

enum mặc định không có giá trị integer, không giống như C và Objective-C. Trong ví dụ CompassPoint ở trên, north, south, east và west không ngầm định bằng 0, 1, 2 hay 3. Thay vào đó, giá trị của các case bên trong một enum dựa vào type của enum đó.

Nhiều case có thể viết trên cùng một dòng, cách biệt bởi dấu phẩy:

Khai báo một biến kiểu enum:

hoặc:

Kiểu dữ liệu của biến directionToHead đã được biết, vì thế bạn có thể bỏ tên của enum đi và viết trực tiếp như cách 2 thay vì gọi từ tên của enum như cách 1 để khiến code gọn hơn.

Sử dụng Switch với enum

So sánh các điều kiện với switch:

Vòng lặp các case trong enum

Giả sử bạn cần đếm số lượng các case trong một enum thì sao? Dễ! Ta có thể làm điều này bằng cách tạo một mảng chứa các case và đếm số lượng phần tử của nó, vậy làm thế nào để tạo được mảng chứa các phần tử của nó? Thật may, Swift đã cung cấp sẵn cho chúng ta protocol CaseIterable, protocol này sẽ tạo thêm một biến allCase là mảng chứa các case trong enum đó:

Sử dụng vòng lặp:

Raw Value

Set giá trị cho từng case để tiện sử dụng:

Ngầm định Raw Value

Swift tự ngầm định giá trị của các case trong enum nếu kiểu của nó là String hoặc Int:

Khởi tạo từ Raw Value

Ta có thể khởi tạo một instance của enum bằng cách sử dụng .init(rawValue: ) của enum:

Lưu ý, khi được khởi tạo với .init(rawValue: ), biến sẽ là kiểu optional

Trên đây là một số định nghĩa cũng như cú pháp và cách sử dụng cơ bản của enum trong Swift.
Nguồn tham khảo: https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo