Я знаю, что для Traversable
вам нужен только метод foreach
. Iterable
требуется метод iterator
.
Оба файла SID Scala 2.8 SID и бумага "Fighting Bitrot with Types" в основном молчат о том, почему добавлен Traversable
. SID только говорит: "Дэвид Макивер... предложил Traversable как обобщение Iterable".
Я смутно собрался из дискуссий по IRC, что он связан с возвратом ресурсов, когда обход коллекции завершается?
Возможно, это связано с моим вопросом. В TraversableLike.scala
есть некоторые нечетные определения функций, например:
def isEmpty: Boolean = {
var result = true
breakable {
for (x <- this) {
result = false
break
}
}
result
}
Я предполагаю, что есть веская причина, которая была написана не просто:
def isEmpty: Boolean = {
for (x <- this)
return false
true
}