В документации Scala коллекции имеют как .seq, так и метод .toSeq, определенные на них. В чем разница между ними и почему они оба существуют? Я не смог понять это из чтения документации коллекции Scala.scala .seq vs .toSeq
ответ
Предположим, что у меня есть параллельный сбор:
val myParList = List(1, 2, 3, 4).par
Теперь такие операции, как map
на этой коллекции будут работать параллельно. Обычно это здорово, так как это означает, что материал может быть сделано быстрее, но иногда вам действительно нужно выполнить какое-то стороне, осуществляющей операции на элементы, а затем работает параллельно может вызвать проблемы:
scala> myParList.foreach(println)
1
4
3
2
.seq
позволяет вам чтобы исправить это, требуя от операции выполняются последовательно (без копирования содержимого коллекции):
scala> myParList.seq.foreach(println)
1
2
3
4
в действительности это просто расстегивает .par
. .toSeq
не дает такой же гарантии, и в целом это полезно только для подклассов GenTraversableOnce
, которые еще не являются Seq
.
Эксперимент в РЕПЛ показывает одно различие:
scala> val l = List(1,2,3)
l: List[Int] = List(1, 2, 3)
scala> l.seq
res2: scala.collection.immutable.LinearSeq[Int] = List(1, 2, 3)
scala> l.toSeq
res3: scala.collection.immutable.Seq[Int] = List(1, 2, 3)
OP говорит, что они уже прочитали документы API, где четко указано различие в типе возврата, поэтому я не уверен, что это будет полезно. –
- 1. Scala: .to [Seq] vs .toSeq на коллекциях
- 2. Scala: Option [Seq [String]] vs Seq [Option [String]]?
- 3. Сравнение Scala Seq
- 4. Scala - Свести Seq, содержащий Seq
- 5. toSeq (some_string) Тип Несоответствие
- 6. Передача Seq [T] как vararg в Scala
- 7. Scala Seq преобразования пары
- 8. Scala Parallel Seq не confroming к послед
- 9. Scala преобразования Seq с будущим
- 10. Scala объединить Seq меток времени
- 11. От seq до _ * в Scala
- 12. Сравнение двух Seq в Scala
- 13. Scala Sugar для опций Seq
- 14. JSON массивы и Scala Seq
- 15. Scala: Соответствие шаблону Seq [Nothing]
- 16. Scala - найти первое положение, в котором два Seq отличаются
- 17. seq (...) аргумент "length.out" vs. "length"
- 18. Scala: Как отобразить подмножество seq до более короткого seq
- 19. scala template function vs forSome
- 20. Clojure seq return function vs direct 'def' of seq
- 21. Почему Scala's toSeq конвертирует неизменяемый набор в изменяемый массив ArrayBuffer?
- 22. Java RDD vs Scala RDD
- 23. Встроенный метод прокатки списка Scala или Seq
- 24. NoSuchMethodError для Scala Seq линии в Спарк
- 25. Scala: from Seq to Sequential Futures
- 26. Scala проверить, если будущее [Seq [String]] IsEmpty
- 27. Как создать Scala Seq [String]() из nashorn?
- 28. scala: Как отсортировать Seq с объектом Order?
- 29. Scala Akka Stream: Как пройти через Seq
- 30. Scala seq из ограниченных Java-генераторов
Чтобы подвести итог, вы можете думать о '.toSeq', как сокращенные' .toSequence' и '.seq' как' .toSequential'. –