2017-08-04 32 views
2

序列的協議序列的協議所需的方法

是夫特協議,因此所有它是所需要的方法。

考慮看看它的聲明,我現在已經看到有很多的方法,比如

makeIterator(), map(), filter() 

等等...

我不知道爲什麼

makeIterator()是必需的

方法。

這不是一個@objc協議與可選關鍵字,它不是協議的擴展名,它不符合任何其他協議。這是一種簡單的Swift協議。

有什麼想法?

+2

「這不是一個協議的擴展名」 - 不,「Sequence」確實爲其餘的需求提供了默認實現,例如'map' [默認實現在這裏](https://github.com/apple/) swift/blob/da069590de164b7d4a0355cd621dc7153869c70d/stdlib/public/core/Sequence.swift#L831),'filter'的[默認實現在這裏](https://github.com/apple/swift/blob/da069590de164b7d4a0355cd621dc7153869c70d/stdlib/public /core/Sequence.swift#L867)。請注意,當序列是自己的迭代器時,還有'makeIterator()'的默認實現。 – Hamish

+1

哦,夥計!我正在尋找在同一個文件中的默認實現,但我無法找到它。事實上,我已經寫道,它不是協議的擴展,因爲我在該文件中找到了默認實現。非常感謝! – ndPPPhz

+0

@Hamish看起來像一個完全有效的答案,爲什麼不張貼呢? – Alladinian

回答

1

關於這個問題,Hamish爲我們提供了合適的解決方案

它不是一個協議的擴展名」 - 不,順序也爲它要求休息,提供默認 實現例如地圖的默認 實現here ,過濾器的默認實現here注意 有也爲makeIterator()的默認實現當 序列是它自己的迭代器。

我們可以找到makeIterator()默認執行here

真的很感謝!