swift中的.successor()是什么?

Kir*_*apa 6 ios swift

有人能解释someVar.successor()是什么吗?Apple文档说"返回之后的下一个连续值self.".我不明白它的实现意义.

谢谢.

Mid*_* MP 9

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协议.

在这里阅读更多相关信息


Pra*_*tha 6

我们可以在索引上调用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)