有没有办法在Swift中初始化一个数组,以获得某些Type T的重复值

use*_*392 1 generics swift swift-array

在我的init函数中,我有:

 self.x = [T](count: dimensions, repeatedValue: 0)
Run Code Online (Sandbox Code Playgroud)

这不起作用.我如何让它工作.

我希望x是一个类型为T的数组,它被初始化为0.(T直观地像Int,但可能是其他数字表示.)

Bry*_*hen 6

你的代码工作,你只需要确保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]
Run Code Online (Sandbox Code Playgroud)

或以某种方式确保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]
Run Code Online (Sandbox Code Playgroud)