Есть ли способ инициализировать массив в 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]
Другие вопросы по тегам