Swift 元类型不一致

Swift Metatyping Inconsistency

给定以下代码...

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 要求。