给定以下代码...
protocol MyProtocol {}
enum MyEnum: MyProtocol {}
struct MyStruct: MyProtocol {}
class MyClass: MyProtocol {}
func MyFunction(parameter: MyProtocol.Type) -> String {
return "Hi"
}
为什么我必须在分配变量时使用 .self
...
var variable: MyProtocol.Type = MyStruct.self
而不是当我将元类型作为函数参数传递时?
var result = MyFunction(MyStruct)
最佳答案
它看起来像是一个编译器错误。我个人觉得 .self
应该包含在函数参数中。
然而,一旦 Swift 的源代码在今年晚些时候发布,可能会有更好的解释。同时,您可以归档雷达。
编辑:如果 Class.Type
是唯一的函数参数,它似乎会删除 .self
要求。 Swift leave out .self to invoke a function which needs metatype?
关于ios - Swift 元类型不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501973/