swift - 您可以仅扩展使用字符串作为原始值类型的 RawRepresentables 吗?

标签 swift swift-extensions

我正在尝试编写一个基于字符串扩展枚举的扩展。我知道扩展所有枚举的方法是扩展 RawRepresentable,但我希望它仅限于字符串。

extension RawRepresentable where RawRepresentable.RawValue == String{

    func foo(){

        let myRawValue:String = self.rawValue

    }
}

那么如何指定“where”子句来实现此目的?

最佳答案

要仅基于 String 扩展 RawRepresentablewhere 子句只需 where RawValue == String:

extension RawRepresentable where RawValue == String {

    func foo() {
        let myRawValue:String = self.rawValue
        print(myRawValue)
    }
}


enum Flintstone: String {
    case fred, wilma, pebbles
}

Flintstone.fred.foo()  // fred

关于swift - 您可以仅扩展使用字符串作为原始值类型的 RawRepresentables 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804169/

相关文章:

ios - 处理 Swift 扩展中的类初始化失败

swift - 如何在协议(protocol)扩展中定义初始值设定项?

swift 问题 : About Type Casting for AnyObject

swift - 如何确保 Alamofire 请求运行?

ios - 如何在 iOS firebase 中使用带有键和多个值的orderedByChild?

ios - 类型 `Int` 的不可变值只有名为 adjust 的可变成员

arrays - 带有可选参数的 Swift 数组扩展

ios - xcode 属性检查器文本值未正确显示(文本太长)

swift - UICollectionView 视频性能

arrays - 无法附加到数组扩展中