考虑我的两个类:
// Person.swift
class Person {
var parents: Parents?
// ...
}
// Parents.swift. Only a collection of parents with some helper methods.
class Parents {
var parents = [Person]()
// ...
}
如何使用 parents
的迭代器让 Parents
在 for 循环中进行迭代。这不是真实世界的应用程序。我只是好奇。只是想使用 for parent in myParents
而不是 for parent in myParents.parents
。
最佳答案
做到这一点的方法是让你的 Parents
类符合 Sequence
Protocol , 实现 makeIterator
方法,然后通过调用 makeIterator
传递结果在包含 Array<Person>
// Person.swift
class Person {
var parents: Parents?
// ...
}
// Parents.swift. Only a collection of parents with some helper methods.
class Parents{
var parents = [Person]()
// ...
}
// conform to Sequence Protocol
extension Parents: Sequence {
func makeIterator() -> Array<Person>.Iterator {
return parents.makeIterator()
}
}
let myself = Person()
if let myParents = myself.parents {
for person in myParents {
}
}
关于arrays - Swift 3 - 使类可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896072/