该successor()方法返回当前值之后的下一个值(如果有,如果当前值为0则调用successor()将返回1,依此类推)
典型的successor()实现将如下所示:
class ForWardIndexDemo: ForwardIndex
{
private var _myIndex = 0
init(index: Int)
{
_myIndex = index;
}
func successor() -> ForWardIndexDemo
{
return ForWardIndexDemo(index:_myIndex++)
}
}
Run Code Online (Sandbox Code Playgroud)
集合关联类型IndexType指定用于索引集合的类型.任何实现ForwardIndex的类型都可以用作IndexType.
ForwardIndex是一个只能递增的索引,例如,值0的正向索引可以递增到1,2,3等......,此协议内部继承自Equatable和_Incrementable协议.为了遵守ForwardIndex协议,必须实现Successor() - > Self方法和Equatable协议.
在这里阅读更多相关信息
我们可以在索引上调用successor(),而不是添加1.
例如:
func naturalIndexOfItem(item: Item) -> Int? {
if let index = indexOfItem(item) {
return index + 1
} else {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
等于这个:
func naturalIndexOfItem(item: Item) -> Int? {
if let index = indexOfItem(item) {
return index.successor()
} else {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |