In Swift, can one use a string to access a struct property?

后端 未结 4 825
粉色の甜心
粉色の甜心 2021-01-24 15:53

I have a struct and I would like to know if I can access variables using bracket syntax. Here is my struct:

import UIKit

public struct Pixel {
    public var v         


        
4条回答
  •  日久生厌
    2021-01-24 16:02

    Just for fun and to show that it is possible, but it's ugly

    public struct Pixel {
      public var value: UInt32
      public var red: UInt8
      public var green: UInt8
      public var blue: UInt8
      public var alpha: UInt8
    
      subscript(key: String) -> UInt8 {
        get {
          switch key {
          case "red": return self.red
          case "green": return self.green
          case "blue": return self.blue
          case "alpha": return self.alpha
          default: fatalError("Invalid key")
          }
        }
        set {
          switch key {
          case "red": self.red = newValue
          case "green": self.green = newValue
          case "blue": self.blue = newValue
          case "alpha": self.alpha = newValue
          default: fatalError("Invalid key")
          }
        }
      }
    }
    

提交回复
热议问题