Ответ 1
Если посмотреть на источник, определение nonEmpty
:
final def nonEmpty = isDefined
В опции Scala, в чем разница между методом isDefined и nonEmpty? Есть ли разница в производительности между двумя?
Если посмотреть на источник, определение nonEmpty
:
final def nonEmpty = isDefined
Вы можете посмотреть на это наоборот.
Если Option
не предоставил nonEmpty
, он будет предоставлен посредством преобразования в Iterable
, который вызывает toList
.
Вы хотите превратить свой Option
в List
только для проверки этого свойства? Конечно, нет.
Таким образом, проблема заключается не в том, является ли nonEmpty
более эффективным vis-a-vis isDefined
, а по отношению к преобразованию.
Если бы он полагался на преобразование, это закончило бы выполнение lengthCompare
, что создает итератор как служебную.
Итак, ответ заключается в том, что вы можете использовать любой метод, который вы предпочитаете.
Они буквально одинаковы. Я полагаю, что nonEmpty
предоставляется в основном для соответствия с API Collection.