2016-03-10 12 views
0

Может кто-нибудь объяснить, почему я должен использовать Scalaz's NonEmptyList над Scala's List?Scalaz.NonEmptyList vs Scala.List?

В неизменном применении это не имеет особый смысл создавать пустой List

  1. Так я должен всегда использовать NonEmptyList в неизменяемом приложении?
  2. Зачем еще я использовал NonEmptyList сказаса над scala's List, кроме очевидной причины, по которой он гарантирует хотя бы один элемент в списке?

ответ

2

В коллекциях Scala есть несколько небезопасных методов. К ним относятся head, last и т. Д. Unsafe означает, что они будут генерировать исключение, если коллекция пуста. Теперь вы можете сказать: «Я действительно уверен, что эта коллекция не будет пуста во время выполнения, поэтому мой код будет безопасным». Тем не менее, кто-то приходит, меняет ваш код и т. Д.

Так что, по сути, этот тип scalaz дает вам статическую безопасность, потому что если вы статически знаете, что коллекция не будет пуста, тогда безопасно вызвать голову и т. Д.