在我当前的实现中,我使用rawValue这样的方式将字符串枚举传递给函数:
enum Compass: String {
case North, South, East, West
}
func something(key: String) {...}
something(Compass.East.rawValue)
Run Code Online (Sandbox Code Playgroud)
除了String功能之外是否有其他类型,所以我可以做这样的事情?
something(Compass.East)
Run Code Online (Sandbox Code Playgroud)
我不想制作key类型的参数Compass,因为我enums来自各个地方,但都继承自String.
我试过这样做,但收到了一个错误:
func something(key:StringLiteralConvertible){...} //错误:协议'StringLiteralConvertible'只能用作通用约束
有没有我可以使用的类型,所以我不必rawValue每次都使用.
你可以这样做:
func something<T: RawRepresentable where T.RawValue == String>(key: T) {
let string = key.rawValue
}
something(Compass.East)
Run Code Online (Sandbox Code Playgroud)
这允许您传入任何以Strings作为其值的枚举
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |