2015-01-06 8 views
5

誰かがsomeVar.successor()が何であるか説明できますか?アップルのドキュメントには、 "selfの次の値を返します。"私はその実装の意味を理解していません。swiftでの.successor()とは何ですか?

ありがとうございました。

+0

についての詳細を読みますか? – Dair

+0

遊び場にいる間、関数名をクリックし、表示 - >ユーティリティ - >クイックヘルプインスペクタを表示を選択します –

答えて

6

1を追加する代わりに、indexに対してsuccessor()を呼び出すことができます。例えば

これ:

func naturalIndexOfItem(item: Item) -> Int? { 
    if let index = indexOfItem(item) { 
     return index + 1 
    } else { 
     return nil 
    } 
} 

これに等しい:

func naturalIndexOfItem(item: Item) -> Int? { 
    if let index = indexOfItem(item) { 
     return index.successor() 
    } else { 
     return nil 
    } 
} 
+0

しかし、successor()はオーバーフローを許すことに注意してください。 +はしません。 –

9

あれば電流値は、次に呼び出す0である場合successor()方法は、(現在の後に次の値を返しますsuccessor()は1を返すなど)

典型的なsuccessor()の実装は次のようになります。

class ForWardIndexDemo: ForwardIndex 
{ 
    private var _myIndex = 0 
    init(index: Int) 
    { 
     _myIndex = index; 
    } 

    func successor() -> ForWardIndexDemo 
    { 
     return ForWardIndexDemo(index:_myIndex++) 
    } 
} 

コレクションインデックスに 使用される型の型索引タイプの指定に関連するコレクション。 ForwardIndexを実装するすべてのタイプは、 をIndexTypeとして使用できます。

ForwardIndexだけインクリメントすることができる指標であり、例えば の値0の前方にインデックスは1,2,3等にインクリメントすることができる...、これ プロトコルは、内部Equatableと_Incrementableから プロトコルを継承します。 ForwardIndexプロトコルのsuccessor() - > SelfメソッドとEquatableプロトコルを実装する必要があります。

ドキュメントでこれですこのhere

+0

これは私が投稿しようとしていた答えに似ていました。 :) – rakeshbs

+0

@rakeshbs:ああ、あなたもあなたの答えを投稿することができます。あなたの答えには新しいことがあります。 –

+0

あなたの答えは受け入れられたものよりも優れています。それが私がコメントした理由です。 – rakeshbs

関連する問題