2016-03-25 2 views
10

Предположим, у меня есть несколько методов расширения для «MyClass». Мой вопрос в том, что лучше всего организовать или сохранить эти методы? Должны ли они просто быть помещены в файл Kotlin «MyClassExtensions»?Как организовать методы расширения Kotlin

Я попытался инкапсулировать эти методы в классе, но после импорта класса я не мог понять, как использовать/получить доступ к методам расширения.

Редактировать: Для уточнения, я не просил помощи, как вызвать файл, содержащий методы расширения. Я спрашивал о лучших методах/подходах к хранению/организации таких методов. То есть. если они просто помещаются в файлы kotlin или должны быть инкапсулированы в класс. Я исхожу из фона Java, поэтому я привык хранить вещи в классах.

+2

https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions –

+0

Спасибо, я, должно быть, случайно пропустил эту часть в документах. – pjozsef

+0

«лучшие практики/подходы к хранению/организации таких методов», которые делают этот вопрос очень основанным на мнениях – voddan

ответ

3

Насколько мне известно, вы должны поместить их в служебный файл, как и раньше, в базу кода Java.

Но имейте в виду, что вам больше не нужно класть их в класс. Функции верхнего уровня - лучший выбор.

Вы можете обратиться к стандартной библиотеке kotlin или к некоторым проектам с открытым исходным кодом, например anko, это будет хороший пример.

В моем случае, я ставлю расширения одного класса в файле, которые имеют такое же имя исходного файла в другой пакет, и использовать

@JvmMultifileClass 

, чтобы уменьшить количество сгенерированных файлов класса.

0

Как упоминалось в комментарии по моему вопросу, эта часть документов Kotlin объясняет это довольно хорошо. https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions

+1

Да, но что вы называете KT-файлом, содержащим методы расширения? – mfulton26

+0

Что вы называете C-файлом, содержащим функции? Очевидно, это зависит от функций, содержащихся в этом файле. То же самое относится к Котлину. (Нет абсолютно никакого правила, говорящего, что все функции расширения, определенные для класса, должны или должны содержаться в одном файле.) – yole

+0

Я отредактировал свой вопрос, чтобы уточнить, о чем я просил. – pjozsef

Смежные вопросы