Swift: Pass Type as Parameter
Можно ли передать параметр типа в качестве параметра функции в Swift? Примечание. Я не хочу передавать объект указанного типа, но вместо этого сам тип. Например, если бы я хотел реплицировать функцию Swift as?
:
infix operator <-? { associativity left }
func <-? <U,T>(x:U?, t:T) -> T? {
if let z = x as? t {
return z
}
}
}
Конечно, t
проходит как тип, но я хотел бы передать сам тип, чтобы я мог проверить этот тип в теле функции.
Ответы
Ответ 1
Вы можете использовать T.Type
, но вы должны использовать как T
, а не T
:
infix operator <-? { associativity left }
func <-? <U,T>(x:U?, t:T.Type) -> T? {
if let z = x as? T {
return z
}
return nil
}
Использование образца:
[1,2, 3] <-? NSArray.self // Prints {[1, 2, 3]}
[1,2, 3] <-? NSDictionary.self // Prints nil