ios – Swift元分型不一致

鉴于以下代码……

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?

点赞