Scalaz.NonEmptyList против Scala.List?

Может кто-нибудь объяснить, почему я должен использовать Скалаз NonEmptyList над Скалой List?

В неизменяемом приложении не имеет большого смысла создавать пустое List

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

1 ответ

Решение

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

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

Другие вопросы по тегам