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