В этой статье я научу вас основам Kotlin. Начиная с самого начала мы дойдем до уверернного уровня использования Kotlin. Чтоб когда у вас спросили "Как сделать лямбду функцию" вы на лбу спросившего написали:
val sum: (Int, Int) -> Int = { first: Int, second: Int -> first + second }
Почему Kotlin, а не Java❓
Все просто - этот язык является новой формой Java для Android. В нем решили множество проблем из Java, сделали более приятный синтаксис и для Android он стал работать быстрее. В нем есть все функции из Java, но в Java нет некоторых функций из Kotlin. Поэтому если вы давно хотели изучить Kotlin - вы пришли по адресу! ?♀️
Так же этот язык проще многих аналогов (того же Java) от чего начать его использовать куда проще, чем многие другие. Хватит воды - приступаем!
? Переменная:
Переменная простыми словами — это хранилище данных. Сюда можно положить какое-то значение (например, число, строку или другой тип данных). Еще более простой вариант представить себе переменную — подумать о том, что нас окружает. Например, переменной может быть какой-то небольшой мешочек, куда можно положить, к примеру, яблоко. Оно будет там находиться до тех пор, пока мы не решим произвести с яблоком какие-то действия.
С явным указанием типов:
val digit: Int = 0
val string: String = "Hello Wold"
val list: List<String> = listOf("привет", "Тимофей")
Можно также и не указывать тип явно:
val digit = 0
val string = "Hello Wold"
val list = listOf("привет", "Тимофей")
Все переменные которые указываются через val нельзя изменять, чтоб создать переменную, которую можно изменять используйте var
var digit = 0
digit = 10 + 10
Также можно создать переменную, вызвав ее через const val
const val COUNT_SECTOR = 4
const val PRIMARY_LANG = "Ru"
Разница между val и const в том, что const может принимать только примитивные типы данных: Int, String, Float, Char
? Функции:
Функция - это блок, который может выполнять одно конкретное действие, которое Вы укажите.
Функция может принимать параметры, а также может возвращаться или не возвращать результат функции:
Функция с параметрами:
fun sendHello(name: String) {
println("Hello, $name")
}
sendHello("Timofey") // традиционный вызов функции
Вызвав эту функцию и указав значение аргумента в консоли будет выведен результат.
Hello, Timofey
Функция без параметров:
fun sayHello() {
println("Hello World")
}
sayHello()
При вызове этой функции в консоль выводиться следующее:
Hello World
Функции, которые возвращают данные:
Чтоб функция могла возвращать данные ей необходимо указать тип возвращаемых данных и ключевое слово return
fun invoke1(params1: Int, params2: Int) : Int {
return params1 + params2
}
fun another(params: Int): Int { /*...*/ }
another(invoke1(10,200))
Вот так можно использовать подобные функции. На самом деле применений гораздо больше, но мы ограничимся пока этим.
? Циклы и условия:
Цикл — это как повторять одно и то же действие несколько раз
Условие - Если статья понравился, то я подпишусь на автора ;)
Циклы есть следующие: for, while, do while
for (i in 0..10) {
println("-".repeat(20))
println("Значение $i")
println("Возведение в квадрат числа $i: ${i * i}")
}
var index = 0
while (index <= 10) {
println("Index = $index")
println("Возведение в квадрат числа $index: ${index * index}")
index++
}
# ВАЖНО: в цикли while Вы сами контролируете значение вашего index. Если index не менять, то случиться бесконечный вызов цикла и компилятор выведет ошибку!
Есть и другая форма цикла while - do..while:
var i = -0
do{
println(i*i)
i--;
}
while(i > -5)
данном случае вначале выполняется блок кода после ключевого слова do, а потом оценивается условие после while. Если условие истинно, то повторяется выполнение блока после do. То есть несмотря на то, что в данном случае переменная i меньше -5 и она не соответствует условию, тем не менее блок do выполнится хотя бы один раз.
? Классы (ООП)
Вот и подошли к самому интереснему ?
В Kotlin классы — это основной инструмент для создания объектов.
Объект — это комбинация данных и действий, которые с этими данными можно выполнять. Класс, по сути, является "чертежом", на основе которого можно создавать объекты.
Как объявить класс?
class Person {
var name: String = ""
var age: Int = 0
}
Здесь мы создали класс Person
с двумя свойствами: name
и age
. Когда создается объект класса Person
, мы можем задавать значения для этих свойств.
Создание объектов ?
Чтобы создать объект класса, используем ключевое слово new
в некоторых других языках, но в Kotlin оно не требуется:
val person = Person()
person.name = "Маша"
person.age = 25
Теперь объект person
содержит данные: имя "Маша" и возраст 25.
Конструкторы ?
Конструктор — это специальная функция, которая вызывается при создании объекта. В Kotlin можно упростить работу с классами, добавив конструктор прямо в объявление класса:
class Person(val name: String, val age: Int)
Теперь при создании объекта мы можем сразу передать значения:
val person = Person("Маша", 25)
println(person.name) // вывод: Маша
Методы в классах ?
Классы также могут содержать методы — функции, которые выполняют действия с данными класса. Пример:
class Person(val name: String, val age: Int) {
fun introduce() {
println("Привет, меня зовут $name и мне $age лет.")
}
}
Теперь можно вызвать метод introduce
:
val person = Person("Маша", 25)
person.introduce() // вывод: Привет, меня зовут Маша и мне 25 лет.
Классы в Kotlin позволяют легко организовать данные и действия над ними в одном месте. Благодаря компактному синтаксису, классы становятся удобным инструментом для работы с объектно-ориентированным программированием.
Итог ?
Если Вам казалось, что Kotlin - это сложный язык, то начните с самых маленьких шагов к изучению этого языка и вы поймете как он работает и как стать гуру Kotlin )
Это была первая статья из серии "Kotlin". Если у вас остались вопросы или вы недовольны постом - смело комментируйте, критикуйте или поблагодарите за хорошую работу ?
Если понравилось мое творчество, то смело переходите в мой ТГ канал, там много всего интересного
Комментарии (19)
XelaVopelk
07.10.2024 18:14+2"...переменная, которая не может быть изменяемая..." Если заменить словом "константа", то будет короче. :-)
PS "...Ну а покойники, бывшие люди, —
Смелые люди и нам не чета...."
RTFM13
07.10.2024 18:14Поправьте, меня если я не прав, но котлин вроде был надстройкой над явой. И по этому любой исходник на котлине имеет ява представление. И выполняется всё это на ява-машине.
Т.е. котлин это такой синтаксический сахар для явы на максималках.
glider_skobb
07.10.2024 18:14Изначально Котлин так и задумывался, но сейчас это уже давно не так. Во-первых, существует Kotlin Native. Это технология, которая позволяет кастомным компилятором собирать исходники на Kotlin в нативные бинарники. Благодаря ей можно писать приложения для iOS, например. Можно конечно писать и для винды или линукса, как на C, но это не очень популярный способ)
Есть ещё Kotlin JS, транспилятор, который преобразует код на котлине в код на JS, и Kotlin WASM, который может исполнять код на котлине в браузере при помощи WebAssembly.
К сожалению, тут хочется поправить скорее автора статьи
max-zhilin
07.10.2024 18:14+1Kotlin копилируется в байткод для Java-машины, но не сначала в Java, а затем в байткод.
Но в Java можно транспилировать, как и обратно. Но будет не идеально.
FasdAR
07.10.2024 18:14Нет, Котлин обратно совместим с явой за счёт компиляции кода в промежуточный ява байт код, что позволяет выполнить и ява код на котлине и котлин на яве и тем самым запускать котлин на jvm
souls_arch
07.10.2024 18:14+1"Функция - это блок, который может выполнять одно конкретное действие, которое Вы укажите."
Во-первых, в Котлине, как и в Джаве, функции принято называть методами. Во-вторых, если функция действительно содержит одно конкретное действие в одну строку, то её можно записать сокращенным синтаксисом без фигурных скобок и return. В-третьих, количество действий в функциях не ограничено. Рекомендовано, чтобы они не превышали 20 строк и были объединены общей целью ведущей к конкретному результату. Чаще всего они представляют из себя блок кода, а не одну строку или действие в одну строку.
Поэтому советую дополнить блок по функциям в статье с дополнительными примерами. Другие дополнения уже дали выше.
Tony-Sol
07.10.2024 18:14Во-первых, в Котлине, как и в Джаве, функции принято называть методами
Не помню как в java, но в kotlin можно объявлять просто функции на уровне пакета. Разница между методом и функцией в том, что метод принадлежит какому-либо классу и имеет доступ к его состоянию (помимо глобального если оно есть)
KirOFF_YT
07.10.2024 18:14Орфографических и смысловых ошибок, у вас, конечно, хватает с пренебрежением))
buratino
Это что за переменная, которую нельзя менять?!
SpaceTimofey Автор
val и var - это 2 способа обьявить переменную. Для Kotlin val - это final переменная, которая не может быть изменяемая. Ее можно только инициализировать и использовать.
На практике - это структура довольно удобная может быть. К примеру если хотите создать какую-то модель данных или список моделей в одной переменной, которая по логике не должна изменяться ее лучше инициализировать через VAL, нежели VAR.
Спасибо большое за комментарий!)
buratino
не бывает переменных, которые не могут быть изменяемы. Если не изменяется, то это константа, а не пере-мен-ная. Но это так сказать логический косяк от авторов Котлина.
youngmyn
Чето угарнул с комментариев. Анекдот вспомнился не очень приличный:
А вообще, напишите в JetBrains - мол, ребят, сделали плохо, подправить надо
cosmopolitan_29
У вас через val может быть объявлена вполне себе переменная, например ссылка на MutableList или ByteArray. Разница между var и val в изменяемости ссылки.
glider_skobb
И от авторов Свифта тогда тоже. Из официальной документации Swift:
Swift uses variables to store and refer to values by an identifying name. Swift also makes extensive use of variables whose values can't be changed. - "Свифт использует переменные, чтобы сохранять и ссылаться на значения по имени. Свифт также активно использует переменные, значения которых не могут быть изменены."
Может быть, если весь мир не прав, а вы правы, стоит задуматься?