Function kotlin android studio

Function kotlin android studio

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Коты забавные, поэтому ввели ключевое слово fun (есть спорное мнение, что на самом деле это сокращение от «function» для обозначения функций, которые являются аналогами методов в Java).

Объявление функции начинается с ключевого слова fun, затем идёт имя функции, в круглых скобках указываются параметры. Тип возвращаемого значения указывается после списка параметров и отделяется от него двоеточием. Функция всегда возвращает значение. Если вы сами не указали возвращаемое значение, то функция вернёт Unit, который схож с void, но является объектом.

Параметры в функциях объявляется немного иначе, чем в Java — сначала имя параметра, потом его тип.

С функциями можно работать как с значениями — можно сохранить в переменной, передать в качестве параметра, возвратить из другой функции.

Стандартный вывод «Hello Kitty» для Kotlin-программы (Desktop, не Android):

Данная функция ничего не возвращает. Напишем другую функцию, возвращающую результат.

Обратите внимание, что if является выражением в Kotlin, а не Java-оператором и соответствует тернарному оператору в Java:

Простую функцию, в которой блок состоит из одной строки кода, можно переписать в одну строчку.

Можно даже убрать возвращаемый тип. Гулять так гулять.

Такой способ подходит только для функций, в которых Kotlin способен самостоятельно разобраться, чего хотел разработчик, т.е. с телом-выражением в правой части. В правой части мы вычисляем какой-то результат, который обычно передавали в return. Теперь мы можем отказаться от return и фигурных скобок, и сразу присваивать результат функции.

В других случаях (тело-блок) вы обязаны указывать возвращаемый тип и использовать инструкцию return.

Функции верхнего уровня можно импортировать для сокращения кода.

Доступен вариант со звёздочкой.

Можно даже изменить имя и создать псевдоним при помощи ключевого слова as. Этот вариант может оказаться полезным, если имеются несколько одинаковых названий функций из разных пакетов и хочется избежать путаницы и конфликтов.

Именованные параметры

Мы привыкли, что при вызове метода следует соблюдать очерёдность параметров. С именованными параметрами такая необходимость отпала. Создадим новую функцию из двух параметров.

Вызывая функцию, мы можем не соблюдать порядок параметров, если явно будем прописывать имена параметров.

Несмотря на то, что мы поменяли местами параметры, итоговый результат всё равно будет работать правильно. Такой подход может пригодиться, когда вы не помните порядок и вам лень смотреть документацию.

Данный приём не сработает при работе с методами, написанными на Java. Поддержка именованных аргументов есть в Java 8, но Kotlin поддерживает совместимость с Java 6, поэтому приходится смириться. Возможно, в будущем, эта проблема решится автоматически, когда откажутся от поддержки старых версий.

Параметры по умолчанию

Очень удобная функциональность — создание параметров по умолчанию. Если вы предполагаете, что какой-то параметр будет часто использовать какое-то конкретное значение, то мы можем сразу его указать. При вызове функции мы можем опустить этот параметр, он применится автоматически. Если нам нужно указать другое значение, то параметр добавим.

Добавим в класс активности новую функцию для вывода всплывающего сообщения (в примере используется функция-расширение).

Второй параметр использует значение по умолчанию и мы можем его не указывать при вызове. Вызываем функцию.

С параметрами по умолчанию нужно быть внимательными, возможна ситуация, когда Kotlin не поймёт, что вы от него хотите. Создадим функцию из трёх параметров, один из них будет иметь значение по умолчанию.

Вызываем функцию с двумя параметрами, надеясь, что третий подставится самостоятельно. Но Kotlin не может решить, какой параметр пропущен.

В этом случае на помощь приходят именованные параметры.

Читайте также:  Wardencam для андроид pro

Третий параметр теперь нам известен, опущенный параметр относится ко второму, оставшийся относится к первому.

У класса Thread имеется восемь конструкторов! Вы можете создавать гораздо удобные решения с параметрами по умолчанию.

Unit. Если функция ничего не возвращает

Стоит немного рассказать о функциях, которые не возвращают никаких значений. В Java мы используем ключевое слово void для подобных случаев. В Kotlin был придуман новый тип Unit для подобных ситуаций. Получается, что функция всегда что-то возвращает, в нашем случае Unit, который мы никак не используем.

Но Kotlin достаточно умен и понимает, что мы не хотим ничего возвращать. Поэтому мы можем сократить код.

Можно сократить код, убрав фигурные скобки, так как у функции только одно выражение.

Ключевое слово vararg — переменное число параметров

В Java при вызове методов с разным числом аргументов использовалось троеточие (. ). В Kotlin существует другой подход — ключевое слово vararg.

Вызываем функцию с любым количеством аргументов.

Если функция имеет и другие параметры, то они должны быть раньше vararg. Можно обойти это правило, если использовать именованные параметры, но лучше избегать таких ситуаций.

По сути vararg работает с массивом, но простое добавление массива Kotlin не пропустит. Следует использовать специальный оператор *.

Вложенные (локальные) функции

Внутри одной функции можно создать ещё одну локальную функцию.

Вложенная функция имеет доступ к переменным своей родительской функции.

Функции верхнего уровня

Функцию можно объявить в начале файла, не обязательно размещать его в теле класса. Это удобно, когда вам нужны методы, которые не относятся к конкретному классу или вы не хотите перезагружать имеющийся класс лишним кодом. Часто для этих целей программисты создавали отдельные классы со словом Util.

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

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

Kotlin незаметно для вас создаст класс CatsKt по имени файла и все функции скомпилирует в статические методы. Если будете вызывать функцию в Java-коде, то это будет выглядеть следующим образом.

Если имя класса вас не устраивает, то добавьте аннотацию @JvmName перед именем пакета.

Тогда вызов в Java-коде будет другим.

Функция TODO()

В стандартную библиотеку Kotlin входит функция TODO() (надо сделать). Её описание выглядит следующим образом.

Функция TODO() возбуждает исключение, т.е. вызов функции гарантированно завершится ошибкой — она возвращает тип Nothing. Считайте функцию временной заглушкой. Разработчик знает, что некоторая функция должна вернуть строку или другой объект, но пока отсутствуют другие функции, необходимые для ее реализации. Создадим для примера две функции.

Обратите внимание, что возвращаемое значение для shouldReturnAString() — это String, но на самом деле функция ничего не возвращает. Аналогично у shouldReturnACat().

Возвращаемый тип Nothing у TODO() показывает компилятору, что функция гарантированно вызовет ошибку, поэтому проверять возвращаемое значение после TODO() не имеет смысла, так как shouldReturnAString() и shouldReturnACat() ничего не вернут. Компилятор не будет ругаться, а разработчик может продолжать разработку, отложив на потом реализацию функции-заглушки.

Функцию можно вызвать без аргументов. Код, который будет следовать за функцией, будет недостижим.

Имена функций в обратных кавычках

Можно объявить или вызвать функцию с именем, содержащим нестандартные символы. Для этого достаточно заключить имя в обратные кавычки `. Например, объявим функцию:

Данная возможность нужна, чтобы поддерживать совместимость с Java в тех моментах, когда встречаются зарезервированные ключевые слова. Использование обратных кавычек позволяют избежать несовместимости в случаях, если это необходимо. На практике такое почти не встречается.

На данный момент под Android такой способ не работает, студия будет ругаться.

Источник

Kotlin

Любой кот линяет. Из выпавшей шерсти можно собрать второго кота. По такой же аналогии из Java можно создать новый язык Kotlin, образованный из двух слов Kot linяет. Есть ещё неправдоподобная версия об острове в Финском заливе, которая просто смешна и не заслуживает внимания.

17 мая 2017 года на Google IO объявили о поддержке Kotlin в Android Studio 3.0. Пора учить новый язык, который заслужил много лестных отзывов от опытных разработчиков.

Читайте также:  Как обойти пин код андроид

Что нового

Август 2020. Вышла версия 1.4.0. Из интересного:

Можно использовать завершающую запятую в параметрах и аргументах. Это удобно, что можно быстро менять строчки местами, копируя всю строку вместе с запятой.

Можно использовать break и continue в выражениях when удобным способом.

Новая функция setOfNotNull. Новые функции для коллекций (ищите поиском). Новые функции для массивов (ищите поиском)

3 марта 2020 года вышла версия 1.3.70. Новые классы и функции для коллекций.

22 августа 2019 вышла версия 1.3.50. Появилось новое: Duration and time measurement API.

19 июня 2019 года вышла версия 1.3.40.

В октябре 2018 года вышла версия Kotlin 1.3. Новые функции ByteArray.decodeToString, String.encodeToByteArray, CharArray.concatToString, String.toCharArray.

Корутины вышли из экспериментального статуса.

Функцию main() можно использовать без параметров.

Появились беззнаковые типы: UByte (0. 255), UShort (0. 65535), UInt (0. 2^32 — 1), ULong (0. 2^64 — 1).

Новый мультиплатформенный класс kotlin.random.Random: println(Random.nextInt(43))

28 ноября 2017 года вышла новая версия Kotlin 1.2.

Добавлены новые функции для изменяемых списков: fill, replaceAll, shuffle.

Добавлена новая функция shuffled для неизменяемых списков.

Добавлены математические функции. Например, можем узнать, что число является отрицательным.

Продолжить изучение Kotlin

Сконвертировать существующий Java-код на Kotlin можно через меню Code | Convert Java File to Kotlin File.

Если скопировать в буфер обмена код на Java и вставить его в kt-файл, то студия автоматически сконвертирует код.

На заметку: Файлы с кодом на Kotlin смотрятся странно в папке java в проекте студии. Открываем файл gradle.build модуля и в секции android добавляем блок:

Переключаемся в режим Project и переименовываем папку java. Приложение будет работать по-прежнему. В режиме Android по-прежнему будет видна папка java, это жестко прописано в студии. Может потом поправят этот момент.

Tools | Kotlin

Также в студии есть целый раздел меню для настройки: Tools | Kotlin.

Show Kotlin Bytecode

При выборе Show Kotlin Bytecode можно просматривать любой файл *.kt, в отдельном окне будет виден байткод файла. Если в нём не будет данных, которых нельзя представить в Java, то также будет доступна возможность декомпилировать его в Java-код кнопкой Decompile.

Kotlin REPL

Интересная оболочка в виде командной строки. Можно быстро написать какое-то выражение и получить результат.

Библиотека Anko была специально разработана для удобного программирования под Android, сокращая количество кода для вызовов намерений, диалоговых окон, журналирования и т.д.

Спустя четыре года её объявили устаревшей и поддержка прекратилась. А всё почему? Выбрали какое-то непонятное название. Назвали бы Barsik, тогда все бы использовали её.

Примеры на Kotlin

Книги

Книга, выпущенная в 2020 году Head First. Kotlin (на русском)

Первая книга на русском языке «Kotlin в действии». В начале книге перечисляются благодарности, в том числе — Наконец, мы хотели бы поблагодарить наши семьи и котов за то, что они делают этот мир лучше.

Источник

Как использовать Kotlin в ваших проектах Android

Введение

Kotlin, язык программирования с открытым исходным кодом, разработанный JetBrains, становится все более популярным среди разработчиков Java. Он часто рекламируется как преемник Java. По сравнению с Java, он предлагает более богатый опыт разработки, потому что он более современный, выразительный и лаконичный.

Если вы ищете альтернативный язык программирования для разработки Android, вы должны попробовать Kotlin. Его можно легко использовать вместо или в сочетании с Java в ваших проектах Android.

В этом уроке я покажу вам, как использовать плагины Kotlin и Kotlin в ваших проектах Android Studio.

Предпосылки

Чтобы следовать за мной, вам нужно:

  • последняя версия Android Studio
  • базовое понимание синтаксиса Kotlin

Если вы не знакомы с языком программирования Kotlin, я рекомендую прочитать раздел «Начало работы» секции Kotlin, чтобы познакомиться с языком.

1. Установка плагинов Kotlin

В меню быстрого запуска Android Studio выберите Настройка> Плагины.

На следующем экране нажмите Установить плагин JetBrains.

Выберите Kotlin Extensions для Android из списка и нажмите Установить плагин справа.

Поскольку плагин зависит от плагина Kotlin, вас попросят установить оба. Нажмите Да, чтобы начать установку.

По завершении установки перезапустите Android Studio, чтобы активировать плагины.

2. Создание Kotlin Activity

В Android Studio щелкните правой кнопкой мыши имя вашего пакета и выберите Создать> Файл Kotlin.

Читайте также:  Монитор сети для андроид

В появившемся диалоговом окне введите имя нового Activity и выберите Класс в раскрывающемся списке. Я назвал свой класс MainActivity.

Как только класс будет создан, вы увидите предупреждение с просьбой настроить модуль приложения для поддержки Kotlin.

Нажмите ссылку в предупреждении и в появившемся диалоговом окне нажмите OK, чтобы выбрать значения по умолчанию.

Чтобы настроить проект для поддержки Kotlin, плагин Kotlin вносит несколько изменений в файл build.gradle. Примените эти изменения, нажав кнопку Синхронизировать сейчас, как показано ниже.

На этом этапе конфигурация вашего проекта завершена. Вернитесь к классу Kotlin, который вы создали минуту назад, чтобы начать писать код на Kotlin.

3. Использование Kotlin

Чтобы упростить пример, я покажу вам, как создать Activity с помощью одного TextView , который отображает String .

Убедитесь, что ваш класс является подклассом Activity и переопределяет его метод onCreate . Конечно, вы должны сделать это в Kotlin. Если вы новичок в Kotlin, я предлагаю вам использовать функциональность генерации кода Android Studio, нажав Control + O, чтобы получить сигнатуры метода справа.

Теперь ваш класс должен выглядеть следующим образом:

Создайте экземпляр TextView как локальную переменную assign-once, используя ключевое слово val .

Вызовите ее метод setText , чтобы установить String , который хотите отобразить, и затем вызовите setContentView для отображения текстового вида.

Как и для Java- Activity , вам нужно объявить свою Kotlin- Activity в AndroidManifest.xml вашего приложения, чтобы она была распознана системой Android. Если это единственный Activity в вашем проекте, ваш файл манифеста должен выглядеть так:

Теперь вы можете скомпилировать и запустить приложение на своем Android-устройстве или эмуляторе. Хотя компилятор Kotlin немного медленнее, чем у Java, вы вряд ли увидите существенные изменения во времени сборки вашего проекта.

4. Использование Kotlin Android Extensions

Плагин Kotlin Android Extensions позволяет обрабатывать виджеты, которые вы определяете в XML-макете Activity , как если бы они были свойствами этой Activity . Другими словами, если вы используете этот плагин, вам никогда не придется вызывать findViewById . Эти свойства называются синтетическими свойствами.

Чтобы использовать эту функцию в своем приложении, вам нужно добавить org.jetbrains.kotlin: kotlin-android-extensions как зависимость скрипта сборки в модуле build.gradle вашего приложения, как показано ниже. Не забудьте нажать кнопку Синхронизировать сейчас, чтобы синхронизировать ваш проект.

Теперь создадим Activity , аналогичную той, которую мы создали на предыдущем шаге, но используем XML-макет для определения TextView . Создайте новый XML-файл макета с именем another_activity.xml. В XML-файле макета укажите TextView с id myMessage.

Создайте еще один класс Kotlin, AnotherActivity, который расширяет Activity и переопределяет его метод onCreate . Это должно выглядеть так:

Вызовите setContentView в методе onCreate для использования XML-макета, который вы только что создали, в качестве макета этого Activity .

Теперь вместо вызова findViewById для получения ссылки на TextView вы можете импортировать его с помощью следующего фрагмента кода:

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

Теперь вы можете получить доступ к своему TextView , используя свой id , как если бы это было свойство класса Activity . Например, чтобы изменить текст TextView, вы можете написать:

5. Преобразование классов Java в Kotlin

Вы можете использовать плагин Kotlin для преобразования существующих классов Java в классы Kotlin. Чтобы попробовать эту функцию, создайте новый класс Java со следующей реализацией. Это простая Activity , которая выводит сумму двух целых чисел.

Преобразуйте класс Java в класс Kotlin, нажав Control + Alt + Shift + J или в меню выберите Код > Преобразовать файл Java в файл Kotlin.

После преобразования ваш класс будет выглядеть следующим образом:

Вы также заметите, что расширение файла изменилось с .java на .kt.

Заключение

В этом уроке вы узнали, как использовать Kotlin в своих проектах Android после установки плагина Kotlin и плагина Android Kotlin для Android. Поскольку классы Kotlin и Java в значительной степени совместимы, если вы все еще изучаете Kotlin, лучше всего вводить его в свои проекты Android постепенно.

Чтобы узнать больше о Kotlin, я рекомендую просмотреть документацию Kotlin. Раздел Начало работы поможет вам быстро освоить этот новый язык.

Источник

Оцените статью