Generics 如何在Swift中创建可循环类?
在Swift中,我创建了自己的容器类,其行为类似于数组。我只是想不出怎么做,这样我就可以循环了Generics 如何在Swift中创建可循环类?,generics,swift,Generics,Swift,在Swift中,我创建了自己的容器类,其行为类似于数组。我只是想不出怎么做,这样我就可以循环了 class List<T> { var items = [T](); func add(allItems:T...){ items += allItems } subscript(i:Int) -> T? { return items[i] } } var l = List<Int>() l.add
class List<T> {
var items = [T]();
func add(allItems:T...){
items += allItems
}
subscript(i:Int) -> T? {
return items[i]
}
}
var l = List<Int>()
l.add(1,2,3,4)
l[2]! //3
items
是一个数组
,它已经实现了SequenceType
,那么为什么不将调用传递给generate()
函数呢
class List<T>: SequenceType {
var items = [T]();
func add(allItems:T...){
items += allItems
}
func generate() -> IndexingGenerator<Array<T>> {
return items.generate()
}
subscript(i:Int) -> T? {
return items[i]
}
}
类列表:SequenceType{
var项目=[T]();
功能添加(所有项目:T…){
项目+=所有项目
}
func generate()->索引生成器{
返回项目。生成()
}
下标(i:Int)->T{
退货项目[i]
}
}
您还需要指定生成器typealias以完全实现SequenceType协议:typealias Generator=GeneratorOf
@drewag我也这么认为,但在这种情况下,如果没有它,它似乎可以正常工作;编译器必须能够推断它。
class List<T>: SequenceType {
var items = [T]();
func add(allItems:T...){
items += allItems
}
func generate() -> IndexingGenerator<Array<T>> {
return items.generate()
}
subscript(i:Int) -> T? {
return items[i]
}
}