Swiftでカスタム配列を作る
配列をラッピングしてメソッドを追加したい場合、Collectionを継承したstructを作るのがよさげ。
class Hoge {
var name: String
init(name: String) {
self.name = name
}
}
struct HogeArray<Hoge>: Collection {
let array = [Hoge]()
var startIndex: Int { return 0 }
var endIndex: Int { return array.count }
subscript(index: Int) -> Hoge {
return array[index]
}
func index(after i: Int) -> Int {
precondition(i < endIndex, "Can't advance beyond endIndex")
return i + 1
}
}
これでindex指定で要素を取得できる。
var hoge = hoges[1]
for文を要素を取得することも出来る。
var hoges = [Hoge]()
hoges.append(Hoge(name: "01"))
hoges.append(Hoge(name: "02"))
hoges.append(Hoge(name: "03"))
for hoge in hoges {
print(hoge.name)
}
参考
https://developer.apple.com/documentation/swift/indexingiterator