Scalaz.NonEmptyList против Scala.List?
Может кто-нибудь объяснить, почему я должен использовать Скалаз NonEmptyList
над Скалой List
?
В неизменяемом приложении не имеет большого смысла создавать пустое List
- Так что я должен всегда использовать
NonEmptyList
в неизменном приложении? - Зачем еще использовать скалязы
NonEmptyList
по скалеList
кроме очевидной причины, по которой он гарантирует хотя бы один элемент в списке?
1 ответ
Решение
В коллекциях Scala есть несколько небезопасных методов. К ним относятся заголовок, последний и т. Д. Небезопасный означает, что они вызовут исключение, если коллекция пуста. Теперь вы можете сказать: "Я действительно уверен, что эта коллекция не будет пустой во время выполнения, поэтому мой код безопасен". Однако кто-то приходит, меняет ваш код и т. Д.
Так что, по сути, этот тип скалаза дает вам статическую безопасность, потому что если вы статически знаете, что коллекция не будет пустой, тогда безопасно вызывать голову и т. Д.