Перейти до вмісту

Освоюємо Kotlin/Функції

Матеріал з Вікіпідручника


Функції - це автономний шматок коду, який ми можемо викликати для виконання з іншого місця коду. Функції в Kotlin можуть створюватись без оголошення класу (на відміну від Java, де функції/методи є обов'язковою складовою певного класу).

Оголошення функції в Kotlin відбувається із вказанням ключового слова fun. Наприклад, створемо функцію test(), яка виводить якийсь текст і викличемо її.

fun main() {
    test() // викликаєм функцію
}
fun test(){
    println("Test") //виводимо слово Test
}

Для того, щоб передати, щось у функцію, наприклад, щоб передати туди числа, використовуються параметри. Для задання параметрів вказуємо назву параметру та його тип через двокрапку:

fun max(a: Int, b: Int){
    println(if (a>b) a else b)
}

Викликати цю функцію із функції main можна так:

fun main(args: Array<String>) {
    max(4, 1)
}

Якщо потрібно повернути певне значення із функції, то після дужок і двокрапки вказується тип значення, що повертається:

fun max(a: Int, b: Int):Int{
    return if (a>b) a else b
}

Компілятор строго контролюватеме чи ви передаєте аргументи правильного типу у функцію, тобто якщо написати max("a", 3.14), то видасть помилку.

Якщо функція не повертає ніякого значення, то можна вказати ключове слово Unit замість типу. Але це не обов'язково, можна нічого не вказувати.

fun max(a: Int, b: Int):Unit{
    println(if (a>b) a else b)
}
//або так
fun max(a: Int, b: Int){
    println(if (a>b) a else b)
}

Якщо функція складається з одного рядка, то фігурні дужки можна опустити і написати так:

fun max(a: Int, b: Int) =  println(if (a>b) a else b)

Змінні оголошені в середині функції є локальними і видимими лише в цій функції.

Параметри створюються як val, тобто є константами і їм неможливо перепризначити значення:

fun myFunction(message: String){
message = "Hi!" // помилка
}

При виклику функцій можна вказувати назви параметри(але це не обов'язково):

fun main() {
    printUserInformation(name="Bob", position="Manager")
}
fun printUserInformation(name:String, position:String){
    println ("Користувач: $name, посада: $position")
}

При використанні іменних параметрів при виклику, порядок параметрів можна змінювати.

У функції можна задати значення параметру по замовчуванню, тоді якщо при виклику ми опускаємо цей параметр, то у функції для нього буде підставлятися значення по замовчуванню:

fun main() {
    printUserInformation(name="Bob")
}
fun printUserInformation(name:String, position:String="Manager"){
    println ("Користувач: $name, посада: $position")
}
Standard input or output Результат:
Користувач: Bob, посада: Manager