[英]Apple Swift: Initialize Array of Generic Type
我有一个泛型类型T的数组(类的成员)。泛型类型只是数字类型(double,int等)。 我的问题是如何在初始化程序中将此数组初始化为所有相同的数字?
我见过这个:
self.data = Double[](count: 3, repeatedValue: 1.0)
所以我尝试了这个,但它不起作用......
self.data = T[](count: 3, repeatedValue: 1.0)
有人知道怎么做吗? 谢谢。
所以,这就是我刚才所做的:
protocol Initable {
init()
}
class Bar:<T: Initable> {
var ar: T[]
init(length: Int) {
self.ar = T[](count:length, repeatedValue: T())
}
}
然后你必须确保你使用的任何T
实现Initable
协议,例如:
extension Int:Initable {}
这让我这样做:
var foo = Bar<Int>(3)
我还使用了原型替代方案:
class Bar:<T> {
var ar: T[]
init(length: Int, proto:T) {
self.ar = T[](count:length, repeatedValue:proto)
}
}
它不需要协议,但需要提供的初始值:
var foo = Bar<Int>(length: 3, proto: 34)
这将有效,但不会将数据类型限制为仅数字类型:
self.data = AnyObject[](count: 3, repeatedValue: 1.0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.