Kotlin в IntelliJ IDEA Kotlin змінні Kotlin типи даних Kotlin операції з числами Kotlin умовні вирази Kotlin умовні конструкції Kotlin цикли Kotlin послідовності Kotlin масиви Kotlin функціональне програмування Kotlin змінна кількість параметрів. Vararg Kotlin повернення результату. оператор return Kotlin однорядкові і локальні функції Kotlin перевантаження функцій Kotlin Лямбда-вирази Kotlin функції вищого порядку Kotlin Анонімні функції Kotlin ООП Класи і об'єкти Kotlin ООП властивості Kotlin ООП конструктор Kotlin ООП функції в класах Kotlin ООП Пакети та імпорт Kotlin ООП модифікатори видимості Kotlin ООП вкладені класи Kotlin ООП інтерфейси Kotlin ООП спадкування Kotlin ООП Перевизначення методів і властивостей Kotlin ООП Абстрактні класи та методи Kotlin ООП Data-класи Kotlin ООП перерахування enums Kotlin ООП Null і nullable-типи Kotlin ООП Обробка винятків Kotlin ООП перетворення типів Kotlin ООП Інфіксна функція Kotlin ООП функції розширення Kotlin ООП Узагальнені класи і функції Kotlin ООП обмеження узагальнень Kotlin ООП Варіантність, коваріантність і контраваріантність Kotlin Колекції. Змінювані і незмінні колекції Kotlin Колекції. LIST список Kotlin Колекції. Set Kotlin Колекції. Map

Kotlin функціональне програмування


Функції та їх параметри

Одним з будівельних блоків програми є функції. Функція визначає деяку дію. У Kotlin функція оголошується за допомогою ключового слова fun , після якого йде назва функції. Потім після назви в дужках вказується список параметрів. Якщо функція повертає якесь значення, то після списку параметрів через кому можна вказати тип значення. І далі в фігурних дужках йде тіло функції.

fun имя_функции (параметры) : возвращаемый_тип{
    выполняемые инструкции
}

Параметри необов'язкові.

Наприклад, визначимо і викличемо функцію, яка просто виводить деяку рядок на консоль:

fun main(args: Array<String>) {
 
    hello() // вызов функции hello
    hello() // вызов функции hello
    hello() // вызов функции hello
}
// определение функции hello
fun hello(){
    println("Hello")
}

Функції можна визначати в файлі поза інших функцій або класів, самі по собі, як наприклад, визначається функція main. Такі функції ще називають функціями верхнього рівня (top-level functions).

Тут крім головної функції main також визначена функція hello, яка не приймає ніяких параметрів і нічого не повертає. Вона просто виводить рядок на консоль.

Функція hello (і будь-яка інша певна функція, крім main) сама по собі не виконується. Щоб її виконати, її треба викликати. Для виклику функції вказується її ім'я (в даному випадку "hello"), після якого йдуть порожні дужки.

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


предача параметрів

Через параметри функція може отримувати деякі значення ззовні. Параметри вказуються після імені функції в дужках через кому в форматі имя_параметра : тип_параметра . Наприклад, визначимо функцію, яка обчислює факторіал числа:

fun main(args: Array<String>) {
 
    factorial(4)
    factorial(5)
    factorial(6)
}
 
fun factorial(n: Int){
 
    var result = 1;
    for(d in 1..n){
        result *= d
    }
    println("Factorial of $n is equal to $result")
}

Функція factorial приймає один параметр типу Int. Тому при виконанні функції в дужках необхідно передати значення для цього параметра: factorial(4) . Причому це значення має представляти тип Int. Значення, які передаються параметрам функції, ще назвают аргументами.

Консольний висновок програми:

fun main(args: Array<String>) {
 
    displayUser("Tom", 23)
    displayUser("Alice", 19)
    displayUser("Kate", 25)
}
fun displayUser(name: String, age: Int){
    println("Name: $name   Age: $age")
}

Функція displayUser() приймає два параметри - name і age. При виконанні функції в дужках їй передаються значення для цих параметрів. При цьому значення передаються параметрам по позиції і повинні відповідати параметрам по типу. Так як спочатку йде параметр типу String, а потім параметр типу Int, то при виконанні функції в дужках спочатку передається рядок, а потім число.


Аргументи за замовчуванням

В наведеному вище прикладі при виклику функцій factorial і displayUser ми обов'язково повинні надати для кожного їх параметра якесь певне значення, яке відповідає типу параметра. Ми не можемо, наприклад, викликати функцію displayUser, не надавши їй аргументи для параметрів, це буде помилка:

displayUser()

Однак ми можемо визначити якісь параметри функції як необов'язкові і встановити для них значення за замовчуванням:

fun displayUser(name: String, age: Int = 18, position: String="unemployed"){
    println("Name: $name   Age: $age  Position: $position")
}
 
fun main(args: Array<String>) {
 
    displayUser("Tom", 23, "Manager")
    displayUser("Alice", 21)
    displayUser("Kate")
}

В даному випадку функція displayUser має три параметри для передачі імені, віку і посади. Для першого параметр name значення за замовчуванням не встановлено, тому для нього значення, як і раніше обов'язково передавати значення. Два наступних - age і position є необов'язковими, і для них встановлено значення за замовчуванням. Якщо для цих параметрів не передаються значення, тоді параметри використовують значення за замовчуванням. Тому для цих параметрів в принципі нам необов'язково передавати аргументи. Але якщо для якогось параметра визначено значення за замовчуванням, то для всіх наступних параметрів теж має бути встановлено за замовчуванням.

Консольний висновок програми

fun main(args: Array<String>) {
 
    displayUser(name="Tom", position="Manager", age=28)
    displayUser(age=21, name="Alice")
    displayUser("Kate", position="Middle Developer")
}

При виконанні функції в дужках ми можемо вказати назву параметра і за допомогою знака одно передати йому потрібне значення.

При цьому, як видно з останнього випадку, необов'язково всі аргументи передавати по імені. Частина аргументів можуть передаватися параметрам по позиції. Але якщо якийсь аргумент переданий на ім'я, то інші також повинні передаватися по імені відповідних параметрів.


Наш партнер:
beta test mp3 playlist downloader