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
要求。
给定以下代码...
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
要求。