在《斯威夫特2》里有这样的方法吗?

enum Placement: Int, OptionSetType {
    case
    Left   = 1 << 0,
    Right  = 1 << 1,
    Center = 1 << 2,
    Top    = 1 << 3,
    Bottom = 1 << 4,
    Middle = 1 << 5
    ;
    ....
}

实际的问题是编译器不够聪明,无法看到这些值是常量,但比结果更可读。
那么,是否有一些语法糖允许这样的声明?

最佳答案

正如@Martin R所说,你需要struct。

struct Placement: OptionSetType {
    let rawValue: Int

    init(rawValue: Int) {
        self.rawValue = rawValue
    }

    static let Left = Placement(rawValue: 1 << 0)
    static let Right = Placement(rawValue: 1 << 1)
    static let Center = Placement(rawValue: 1 << 2)
    static let Top = Placement(rawValue: 1 << 3)
}

关于swift - 有没有一种方法可以定义2的幂的快速枚举(或计算值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36939394/

10-12 14:36