1

在我的初始化函数中,我有:

 self.x = [T](count: dimensions, repeatedValue: 0)

这不起作用。我怎样才能让它工作。

我希望 x 是一个类型为 T 且初始化为 0 的数组。(T 直观地类似于 Int 但可能是其他一些数字表示。)

4

1 回答 1

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]
于 2015-02-03T03:44:10.060 回答