Почему isEmpty в Kotlin Collections не является собственностью?

Я начинаю изучать Kotlin и только что заметил, что Collections.isEmpty является функцией, а не свойством. Однако Collections.size является свойством, а не функцией.

В большинстве (всех?) коллекций я ожидаю, что эти два будут семантически связаны, и реализация isEmpty может быть просто ---- +: = 3 =:. + ----

Итак ... почему size === 0 является свойством? Это просто ошибка дизайна?

7 голосов | спросил Ginandi 1 J0000006Europe/Moscow 2017, 23:35:00

2 ответа


0

При принятии решения, какие методы java.util.Collection будут свойствами в kotlin.collections.Collection были приняты во внимание следующие соображения:

  • могут size и isEmpty быть квалифицированным как свойства в соответствии с соглашениями по кодированию Kotlin , однако size присущ коллекции и isEmpty это просто производная от свойства size.
  • при реализации коллекции можно переопределить свойство size val с помощью var свойство (вероятно, с частным установщиком), но вряд ли оно когда-либо понадобится для isEmpty.
  • для представления метода в качестве свойства требуются дополнительные методы, сгенерированные в производных классах, чтобы их число было как можно меньше.
ответил Ilya 2 J0000006Europe/Moscow 2017, 12:24:32
0

В Java у вас есть метод list.isEmpty() Список # isEmpty () . Наличие свойства list.isNotEmpty в kotlin может сбить с толку людей.

ИМХО причина, по которой разработчики Kotlin-Dev решили сделать isNotEmpty методом, а не свойством, заключается в согласованности с Java.

ответил D3xter 2 J0000006Europe/Moscow 2017, 09:53:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132