Kak*_*arz 9 generics enums protocols ios swift
我需要声明变量,它将存储不同类型的枚举数组,例如:
var enums = [EnumTypeA.Option1, EnumTypeB.Option2]
Run Code Online (Sandbox Code Playgroud)
编译器状态:
如果没有更多的上下文,表达的类型是不明确的
将任何枚举或其他对象作为函数参数传递是必要的.但是我发现我可以通过泛型实现这一点,例如:
func f1<T>(enum: T)
Run Code Online (Sandbox Code Playgroud)
但是使用可选方法(以@objc为前缀)的协议是不可能的.
这很有趣。我没有选择泛型,而是选择了Any,因为这是一切的基础。
enum TypeA {
case Option1
case Option2
}
enum TypeB {
case Option1
case Option2
}
func acceptDifferentEnums(value: Any) {
switch value {
case let typeA as TypeA:
print("This is TypeA")
case let typeB as TypeB:
print("This is typeB")
default:
print("This is something else")
}
}
acceptDifferentEnums(TypeA.Option1) // This is TypeA
acceptDifferentEnums(TypeB.Option2) // This is TypeB
acceptDifferentEnums("Foo") // This is something else
Run Code Online (Sandbox Code Playgroud)
然后,您使用 switch 语句将value属性向下转换为各种枚举,并相应地处理它们。
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |