====== Основной синтаксис ====== ====== // TODO докопировать https://kotlinlang.ru/docs/reference/basic-syntax.html ====== ===== Определение имени пакета ===== Имя пакета указывается в начале исходного файла, так же как и в Java: package my.demo import java.util.* // ... Но в отличие от Java, нет необходимости, чтобы структура пакетов совпадала со структурой папок: исходные файлы могут располагаться в произвольном месте на диске. ===== Объявление функции ===== Функция принимает два аргумента Int и возвращает Int: fun sum(a: Int, b: Int): Int { return a + b } Функция с выражением в качестве тела и автоматически определенным типом возвращаемого значения: ''fun sum(a: Int, b: Int) = a + b'' Функция, не возвращающая никакого значения (void в Java): fun printSum(a: Int, b: Int): Unit { print(a + b) } Тип возвращаемого значения Unit может быть опущен: fun printSum(a: Int, b: Int) { print(a + b) } ===== Определение внутренних переменных ===== Неизменяемая (только для чтения) внутренняя переменная: val a: Int = 1 val b = 1 // Тип `Int` выведен автоматически val c: Int // Тип обязателен, когда значение не инициализируется c = 1 // последующее присвоение Изменяемая переменная: var x = 5 // Тип `Int` выведен автоматически x += 1 Глобальные переменные: val PI = 3.14 var x = 0 fun incrementX() { x += 1 } ===== Комментарии ===== Также, как Java и JavaScript, Kotlin поддерживает однострочные комментарии. // однострочный комментарий /* Блочный комментарий из нескольких строк. */ В отличие от Java, блочные комментарии могут быть вложенными. ===== Использование строковых шаблонов ===== Допустимо использование переменных внутри строк в формате $name или ${name}: fun main(args: Array) { if (args.size == 0) return print("Первый аргумент: ${args[0]}") } var a = 1 // просто имя переменной в шаблоне: val s1 = "a равно $a" a = 2 // произвольное выражение в шаблоне: val s2 = "${s1.replace("равно", "было равно")}, но теперь равно $a" /* Результат работы программы: a было равно 1, но теперь равно 2 */