Быстрое несоответствие метатипов

Учитывая следующий код...

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 опускается. Сам, чтобы вызвать функцию, которая нуждается в метатипе?

Другие вопросы по тегам