Почему Kotlin использует глобальные функции, такие как arrayOf - PullRequest
0 голосов
/ 09 марта 2019

Я новичок в Котлине. Я считаю, что это странная практика.

В случае arrayOf / mutableListOf инстинкт состоит в том, чтобы попробовать конструкцию одного из этих типов, используя конструктор, то есть new Array<T>(...args). Или даже статический фабричный метод, например, LocalDateTime.of(...).

Почему не был использован new Array<T>() или, по крайней мере, функция с областью действия, т.е. Array.of. Разве эти методы не загромождают глобальную область видимости?

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

arrayOf и mutableListOf не находятся в «глобальном масштабе» (это даже не то, что существует).Они находятся в пакетах kotlin и kotlin.collections соответственно.

Просто так получается, что kotlin.* и kotlin.collections.* являются импортом по умолчанию для любого файла kotlin, поэтому вам не нужно делатьэто импортировать себя.См. Импорт по умолчанию .

Это похоже на Java, где java.lang.* импортируется по умолчанию, и вам не нужно указывать его.

Также вы можете 't "construct" arrayOf и mutableListOf, потому что они не являются типами;это методы - и тот факт, что они начинаются со строчной буквы, является стандартным способом указать, что - типы начинаются с заглавных букв.

Kotlin допускает методы на уровне пакета вне класса (хотя при компиляции дляJVM, они будут внутри класса), но это не очень отличается от import static в Java, с помощью которого вы можете получить доступ к статическому методу из класса без префикса имени класса.

0 голосов
/ 09 марта 2019
  1. Kotlin не использует ключевое слово new.
  2. Он дает понять, является ли массив изменчивым или нет.
  3. Существуют библиотеки JavaScript и нативные библиотеки, которые будут отображатьвызов других реализаций.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...