Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.0k views
in Technique[技术] by (71.8m points)

swift - 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)
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

A tuple cannot be a raw value type of enum. From The Swift Programming Language:

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

You could create a custom getter though:

enum Edges {
    case TopLeft, TopRight, BottomLeft, BottomRight

    var rawValue: (Double, Double) {
        switch self {
            case .TopLeft: return (0, 0)
            case .TopRight: return (1, 0)
            case .BottomLeft: return (0, 1)
            case .BottomRight: return (1, 1)
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...