enums - 如何在 Swift 中指定类型约束为枚举?

标签 enums swift

我想指定一个类型约束,该类型应该是一个原始值枚举:

enum SomeEnum: Int {
  case One, Two, Three
}

class SomeProtocol<E: enum<Int>> { // <- won't compile
    func doSomething(e: E) {
        compute(e.toRaw())
    }
}

我如何在 Swift 中做到这一点? (例如,我使用了 F# 语法)

最佳答案

enum SomeEnum: Int {
    case One, Two, Three
}

class SomeClass<E: RawRepresentable where E.RawValue == Int>{
    func doSomething(e: E) {
        print(e.rawValue)
    }
}

class SomeEnumClass : SomeClass<SomeEnum> {

}

或直接

class SomeOtherClass{
    func doSomething<E: RawRepresentable where E.RawValue == Int>(e: E) {
        print(e.rawValue)
    }
}

swift3 更新:

enum SomeEnum: Int {
    case One, Two, Three
}

class SomeClass<E: RawRepresentable> where E.RawValue == Int {
    func doSomething(e: E) {
        print(e.rawValue)
    }
}

class SomeEnumClass : SomeClass<SomeEnum> {

}

回复

class SomeOtherClass{
    func doSomething<E: RawRepresentable>(e: E) where E.RawValue == Int {
        print(e.rawValue)
    }
}

关于enums - 如何在 Swift 中指定类型约束为枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031646/

相关文章:

java - 如何在 ColdFusion 中访问 Java Enum?

c++ - 使用枚举作为数组索引

swift - 在 Swift 中从存档中解码对象时出现 NSInvalidUnarchiveOperationException 错误

ios - NSURLSessionDataTask 是否在后台暂停?

swift - 我如何在另一个类中使用此扩展委托(delegate)更新我的 ViewController UI

具有多个值的Java枚举valueOf()?

java 枚举新列表创建未按预期工作

c++ - 键入安全枚举位标志

ios - 分配 NSTimer 时不调用 Deinit

swift - CloudKit 应用程序数据未显示在表格 View 中