Я знаю, что для Traversable
вам нужен только метод foreach
. Iterable
требуется метод iterator
.
И SID коллекций Scala 2.8, и статья «Борьба с битротом с типами» в основном ничего не говорят о том, почему был добавлен 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
}