Функції з єдиним виразом. Тип Unit. Функції, які повертають тип Unit. Приклади
Зміст
- 1. Поняття про функції з єдиним виразом
- 2. Приклади функцій з єдиним виразом
- 3. Приклад використання функції з єдиним виразом у поєднанні з оператором when. Обчислити кількість днів у місяці
- 4. Приклад використання функції з єдиним виразом у поєднанні з оператором if
- 5. Тип Unit. Функції, які повертають тип Unit
- 6. Приклади функцій, які повертають тип Unit
- Споріднені теми
Пошук на інших ресурсах:
1. Поняття про функції з єдиним виразом
Тіло функції може містити довільну кількість операторів. Однак, бувають випадки, коли функція містить один вираз (рядок). Якщо функція містить один вираз, то у мові Kotlin її можна оформити особливим чином. Загальна форма оголошення функції з єдиним виразом наступна
fun FuncName(parameters) = expression
тут
- FuncName – ім’я функції;
- parameters – список параметрів функції;
- expression – вираз, що визначає тіло функції.
Якщо в тілі функції потрібно виконати декілька виразів (операторів), то використовується звичайний синтаксис оголошення функції.
⇑
2. Приклади функцій з єдиним виразом
Приклад 1. Функція, яка обчислює модуль комплексного числа. Функція отримує параметрами дійсну (re) та уявну (im) частини комплексного числа.
// Функція, що обчислює модуль комплексного числа fun AbsComplex(re:Double, im:Double) = Math.sqrt(re*re+im*im) fun main(args:Array<String>) { // Демонстрація використання функції AbsComplex() var module : Double var re : Double var im : Double print("re = ") re = readLine().toString().toDouble() print("im = ") im = readLine().toString().toDouble() module = AbsComplex(re,im) print("module = " + module) }
Результат роботи програми
re = 3 im = 4 module = 5.0
Приклад 2. Функція, яка обчислює об’єм кулі на основі заданого радіусу.
// Функція, що обчислює об'єм кулі на основі заданого радіусу fun Volume(radius:Double) = 4.0/3 * Math.PI * Math.pow(radius, 3.0) fun main(args:Array<String>) { // Демонстрація використання функції Volume() var volume : Double var radius : Double print("radius = ") radius = readLine().toString().toDouble() volume = Volume(radius) println("volume = " + volume) }
Результат виконання програми
radius = 2.5 volume = 65.44984694978736
⇑
3. Приклад використання функції з єдиним виразом у поєднанні з оператором when. Обчислити кількість днів у місяці
Умова задачі. Розробити функцію, яка за номером місяця (1..12) та номером року визначає кількість днів у цьому місяці.
Розв’язок.
// Функція, що визначає кількість днів у місяці fun GetNDays(month : Int, year : Int) = when (month) { 4, 6, 9, 11 -> 30 1, 3, 5, 7, 8, 10, 12 -> 31 2 -> { if (year % 400 == 0) 29 else if (year % 100 == 0) 28 else if (year % 4 == 0) 29 else 28 } else -> -1 } fun main(args:Array<String>) { // Демонстрація використання функції GetNDays() // 1. Ввід даних print("year = ") val year = readLine().toString().toInt() print("month = ") val month = readLine().toString().toInt() // 2. Виклик функції GetNDays() val nDays = GetNDays(month, year) // 3. Вивід результату if (nDays==-1) println("Incorrect input.") else println("days = " + nDays) }
Тестовий приклад
year = 2008 month = 2 days = 29
⇑
4. Приклад використання функції з єдиним виразом у поєднанні з оператором if
Умова задачі.
Задано додатнє число від 0 до 999999. Розробити функцію з єдиним виразом, яка обчислює кількість цифр у числі.
Розв’язок.
// Функція, що повертає кількість цифр у числі fun GetDigits(number : Int) = if (number < 0) -1 else if (number<10) 1 else if (number<100) 2 else if (number<1000) 3 else if (number<10000) 4 else if (number<100000) 5 else -1 fun main(args:Array<String>) { // Демонстрація використання функції GetDigits() // 1. Ввід числа print("number = ") val number = readLine().toString().toInt() // 2. Виклик функції GetDigits() val nDigits = GetDigits(number) // 3. Вивід результату if (nDigits==-1) println("Incorrect input") else println("nDigits = " + nDigits) }
Тестовий приклад
number = 5564 nDigits = 4
⇑
5. Тип Unit. Функції, які повертають тип Unit
Якщо функція не повертає значення, то в Kotlin ця функція визначається такою, що повертає тип Unit. Якщо в тілі функції не використовується ключове слово return, то вважається що функція повертає значення типу Unit.
У мові Kotlin тип Unit вказує функцію, яка нічого не повертає, але може застосовуватись до узагальнених функцій. В узагальнених функціях повернення хоча б якогось типу є обов’язковим.
У найбільш загальному випадку, функція що повертає тип Unit має вигляд
fun FuncName(parameters) : Unit { // ... }
тут
- FuncName – ім’я функції;
- parameters – параметри функції.
⇑
6. Приклади функцій, які повертають тип Unit
6.1. Вивести представлення десяткового числа у двійковій системі числення
Задача. Розробити функцію, яка отримує ціле число та виводить на екран двійкове представлення цього числа.
Розв’язок.
// Функція, що повертає тип Unit. // Функція виводить двійковий еквівалент цілого числа. fun Print_10_to_2(number : Int) : Unit { var t = number var s = "" while (t>0) { s = (t%2).toString() + s t = t/2 } println(number.toString() + " => " + s) } fun main(args:Array<String>) { // Демонстрація використання функції Print_10_to_2() // 1. Ввід числа print("number = ") val number = readLine().toString().toInt() // 2. Виклик функції Print_10_to_2(number) }
Тестовий приклад
number = 78 78 => 1001110
⇑
6.2. Функція, що виводить число у зворотному порядку (1234 => 4321)
Задача. Розробити функцію, яка виводить на екран ціле число, представлене у зворотному порядку.
Розв’язок.
// Функція, що повертає тип Unit. // Функція виводить число у зворотному порядку fun Print_Reverse_Number(number : Int) : Unit { var t = number var s = "" while (t>0) { s += (t%10).toString() t = t/10 } println(number.toString() + " => " + s) } fun main(args:Array<String>) { // Демонстрація використання функції Print_Reverse_Number() // 1. Ввід числа print("number = ") val number = readLine().toString().toInt() // 2. Виклик функції Print_Reverse_Number(number) }
Тестовий приклад
number = 1234 1234 => 4321
⇑
Споріднені теми
- Функції. Ключове слово fun. Рефакторинг функції Оператор return
- Функції. Область видимості функції. Локальна область видимості. Аргументи за замовчуванням
⇑