Есть ли способ инициализировать массив в Swift, чтобы иметь повторное значение некоторого типа T
В моей функции инициализации у меня есть:
self.x = [T](count: dimensions, repeatedValue: 0)
Это не работает. Как мне заставить это работать.
Я хочу, чтобы x был массивом с типом T, который инициализирован в 0. (T интуитивно похож на Int, но может быть некоторым другим представлением чисел.)
1 ответ
Решение
Ваш код работает, вы просто должны убедиться, T
может быть преобразован из 0
(IntegerLiteralConvertible
)
func test<T: IntegerLiteralConvertible>(dimensions: Int) -> [T] {
return [T](count: dimensions, repeatedValue: 0)
}
println(test(3) as [Int]) //[0, 0, 0]
println(test(3) as [Double]) //[0.0, 0.0, 0.0]
или как-то убедиться, что у val есть тип T
func test<T>(dimensions: Int, val: T) -> [T] {
return [T](count: dimensions, repeatedValue: val)
}
println(test(3, 1)) //[1, 1, 1]
println(test(3, "a")) //[a, a, a]