Поведение Swift Any.Type и дженерики - PullRequest
3 голосов
/ 25 марта 2019

Учитывая функцию с универсальным параметром, я хотел бы передать значение типа Any.Type в функцию, но она не компилируется.

func foo<T>(_ type: T.Type) {
    print(type)
}

foo(Any.self) // ok
foo(Int.self) // ok

let a: Any.Type = Any.self // ok
let b: Any.Type = Int.self // ok

foo(a) // error: expected an argument list of type '(T.Type)'
foo(b) // error: expected an argument list of type '(T.Type)'

Я предполагаю, что:

  1. foo(Any.self) успешно компилируется и заполнитель типа T будет содержать Any.

  2. Аналогично, если значение типа Any.Type дано, T должно быть преобразовано в Any

Не могли бы вы объяснить, почему этот код не работает?

...