2015-01-06 24 views
5

Ai đó có thể giải thích someVar.successor() là gì? Tài liệu của Apple cho biết "Trả về giá trị liên tiếp tiếp theo sau self.". Tôi không hiểu ý nghĩa thực hiện của nó..successor() nhanh chóng là gì?

Cảm ơn.

+0

ở đâu trong tài liệu là điều này? – Dair

+0

Khi bạn đang ở trong sân chơi, hãy nhấp vào tên chức năng, sau đó chọn Xem-> Tiện ích-> Hiển thị thanh tra trợ giúp nhanh –

Trả lời

6

Thay vì thêm 1, chúng tôi có thể gọi người kế nhiệm() trên chỉ mục.

Ví dụ này:

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

là bằng này:

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

Nhưng hãy nhớ rằng người kế thừa() cho phép tràn. + không. –

9

Phương pháp successor() trả về giá trị tiếp theo sau khi một trong những hiện tại (nếu có, nếu giá trị hiện tại là 0 sau đó gọi successor() sẽ trả lại 1 và cứ tiếp tục)

Việc thực hiện kế thừa điển hình() sẽ giống như sau:

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

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

Loại kết hợp thu thập Loại chỉ định loại được sử dụng để lập chỉ mục bộ sưu tập. Bất kỳ loại nào thực hiện ForwardIndex có thể là được sử dụng làm Loại chỉ mục.

Các ForwardIndex là một chỉ số mà chỉ có thể được tăng lên, ví dụ một chỉ số về phía trước của giá trị 0 có thể được tăng lên đến 1,2,3 vv ..., giao thức này trong nội bộ được thừa hưởng từ Equatable và _Incrementable giao thức. Để tuân thủ giao thức kế thừa ForwardIndex() -> Phương thức tự và các giao thức Equatable phải được thực hiện.

Đọc thêm về vấn đề này here

+0

điều này tương tự như câu trả lời tôi sắp đăng. :) – rakeshbs

+0

@rakeshbs: Ohh, Bạn cũng có thể đăng câu trả lời của mình. Câu trả lời của bạn cũng sẽ có bất kỳ điều gì mới để tìm hiểu. –

+0

câu trả lời của bạn tốt hơn câu trả lời được chấp nhận. đó là lý do tại sao tôi nhận xét. – rakeshbs

Các vấn đề liên quan