在我的初始化函数中,我有:
self.x = [T](count: dimensions, repeatedValue: 0)
这不起作用。我该如何让它发挥作用。
我希望x是一个类型为T的数组,初始化为0.(T直观地类似于Int,但也可能是其他数字表示。)
答案 0 :(得分: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]
或以某种方式确保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]