Разница между параметрами Scala Option isDefined и nonEmpty

В опции Scala, в чем разница между методом 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.