Trong enumeration của Swift, sự khác biệt giữa giá trị raw (thô) và giá trị associated (được liên kết) là gì?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
90 lượt xem
Swift middle
  • Các giá trị raw được sử dụng để liên kết các giá trị không đổi (theo nghĩa đen) với các trường hợp enum. Kiểu giá trị là một phần của kiểu enum và mỗi trường hợp enum phải chỉ định một giá trị raw duy nhất (không cho phép các giá trị trùng lặp).Ví dụ sau đây cho thấy một enum với các giá trị raw của kiểu Int:
    enum IntEnum : Int {
       case ONE = 1
       case TWO = 2
       case THREE = 3
    }
    Một giá trị enum có thể được chuyển đổi thành giá trị raw của nó bằng cách sử dụng thuộc tính rawValue:
    var enumVar: IntEnum = IntEnum.TWO
    var rawValue: Int = enumVar.rawValue

    Một giá trị raw có thể được chuyển đổi thành một phiên bản enum bằng cách sử dụng trình khởi tạo chuyên dụng:

    var enumVar: IntEnum? = IntEnum(rawValue: 1)
  • Các giá trị associated được sử dụng để liên kết dữ liệu tùy ý với một trường hợp enum cụ thể. Mỗi trường hợp enum có thể có không hoặc nhiều giá trị được liên kết, được khai báo dưới dạng một bộ trong định nghĩa:
    enum AssociatedEnum {
       case EMPTY
       case WITH_INT(value: Int)
       case WITH_TUPLE(value: Int, text: String, data: [Float])
    }

    Trong khi (các) kiểu được liên kết với một trường hợp là một phần của khai báo enum, (các) giá trị associated là trường hợp cụ thể, có nghĩa là một trường hợp enum có thể có các giá trị liên kết khác nhau cho các trường hợp enum khác nhau.

{{login.error}}