Option
bir Iterable
örtük olarak dönüştürülebilir - ama neden sadece sadece doğrudan Iterable
uygulamıyor:Neden Seçenek, yinelenen özelliği doğrudan genişletmiyor?
def iterator = new Iterator[A] {
var end = !isDefined
def next() = {
val n = if (end) throw new NoSuchElementException() else get
end = true
n
}
def hasNext = !end
}
DÜZENLEME: bundan bile weider var Aslında 2.8 Option
bir iterator
yöntem bildirmek çünkü :
def iterator: Iterator[A] =
if (isEmpty) Iterator.empty else Iterator.single(this.get)
Kaynak kodunu her zaman değiştirebilir ve ne tür kesmeler olduğunu görebilirsiniz. :-) –
Eh, 'isEmpty 'başlatıcılar için bir' geçersiz kılma 'değiştirici gerekir! Ben sadece bunun kavramsal bir şey olup olmadığını merak ettim –
Bunun sebebi Option'un bir monad ve koleksiyon olmadığı içindir. Bana göre koleksiyonların yinelenebilir olduğu anlaşılıyor, ancak bir monad hemen bir koleksiyon değil. Btw: Scala 2.7 hakkında bilmiyorum, ancak 2.8 Option.iterator'da Iterator.empty ve Iterator.single kullanılarak uygulanır. –