Search code examples
swiftrawrepresentable

Enumeration with raw values


Why I can't define enumeration with raw values like this?

enum Edges : (Double, Double) {
    case TopLeft = (0.0, 0.0)
    case TopRight = (1.0, 0.0)
    case BottomLeft = (0.0, 1.0)
    case BottomRight = (1.0, 1.0)
}

Solution

  • Because:

    Raw values can be strings, characters, or any of the integer or floating-point number types.

    But there is an alternative solution for you:

    enum Edges {
        case TopLeft
        case TopRight
        case BottomLeft
        case BottomRight
    
        func getTuple() -> (Double, Double) {
            switch self {
            case .TopLeft:
                return (0.0, 0.0)
            case .TopRight:
                return (1.0, 0.0)
            case .BottomLeft:
                return (0.0, 1.0)
            case .BottomRight:
                return (1.0, 1.0)
            }
        }
    }
    
    let a = Edges.BottomLeft
    a.getTuple() // returning (0, 1)