Быстрое несоответствие метатипов
Учитывая следующий код...
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)
1 ответ
Решение
Похоже, либо ошибка компилятора. Лично я чувствую, что .self
должен быть включен в аргумент функции.
Однако, как только исходный код Swift будет выпущен позднее в этом году, возможно, будет лучшее объяснение. В то же время вы можете подать радар.
РЕДАКТИРОВАТЬ: кажется, чтобы бросить .self
требование, если Class.Type
является единственным параметром функции. Swift опускается. Сам, чтобы вызвать функцию, которая нуждается в метатипе?