您是否只能扩展使用字符串作为原始值类型的RawRepresentables?

时间:2017-12-14 00:28:35

标签: swift swift-extensions

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

extension RawRepresentable where RawRepresentable.RawValue == String{

    func foo(){

        let myRawValue:String = self.rawValue

    }
}

那你怎么指定一个'哪里有'条款实现这个?

1 个答案:

答案 0 :(得分:1)

要仅基于RawRepresentable扩展Stringwhere子句只是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