У меня есть this question за исключением Swift. Как использовать переменную Type
в общем?Использование переменной типа в общем
Я попытался это:
func intType() -> Int.Type {
return Int.self
}
func test() {
var t = self.intType()
var arr = Array<t>() // Error: "'t' is not a type". Uh... yeah, it is.
}
Это не сработало:
var arr = Array<t.Type>() // Error: "'t' is not a type"
var arr = Array<t.self>() // Swift doesn't seem to even understand this syntax at all.
Есть ли способ сделать это? Я чувствую, что Swift просто не поддерживает его и дает мне несколько неоднозначные сообщения об ошибках.
Редактировать: Вот более сложный пример, где проблему нельзя обойти, используя общий заголовок функции. Конечно, это не имеет смысла, но у меня есть разумное использование для такого рода функциональности где-то в моем коде и предпочел бы оставить чистый пример вместо моего фактического кода:
func someTypes() -> [Any.Type] {
var ret = [Any.Type]()
for (var i = 0; i<rand()%10; i++) {
if (rand()%2 == 0){ ret.append(Int.self) }
else {ret.append(String.self) }
}
return ret
}
func test() {
var ts = self.someTypes()
for t in ts {
var arr = Array<t>()
}
}
Ммм, так что это суть проблемы. Думаю, я должен посмотреть эти видео! – sudo