В тази статия ще научите за аргументите по подразбиране и имената с помощта на примери.
Аргумент по подразбиране на Kotlin
В Kotlin можете да предоставите стойности по подразбиране на параметрите в дефиницията на функцията.
Ако функцията се извика с предадени аргументи, тези аргументи се използват като параметри. Ако обаче функцията се извика без предаване на аргументи, се използват аргументи по подразбиране.
Как работят аргументите по подразбиране?
Случай I: Всички аргументи са предадени
Функцията foo()
взема два аргумента. Аргументите се предоставят със стойности по подразбиране. Извиква се обаче foo()
чрез предаване на двата аргумента в горната програма. Следователно аргументите по подразбиране не се използват.
Стойността на буквата и цифрата ще бъде 'x'
и съответно 2 във foo()
функцията.
Случай II: Всички аргументи не са предадени
Тук на foo()
функцията се предава само един (първи) аргумент . Следователно първият аргумент използва стойността, предадена на функцията. Но вторият номер на аргумент ще вземе стойността по подразбиране, тъй като вторият аргумент не е предаден по време на извикване на функция.
Стойността на буквата и цифрата ще бъде 'y'
и съответно 15 във foo()
функцията.
Случай III: Не е предаден аргумент
Тук foo()
функцията се извиква, без да се предава аргумент. Следователно и двата аргумента използват стойностите си по подразбиране.
Стойността на буквата и цифрата ще бъде 'a'
и съответно 15 във foo()
функцията.
Пример: Аргумент по подразбиране на Kotlin
fun displayBorder(character: Char = '=', length: Int = 15) ( for (i in 1… length) ( print(character) ) ) fun main(args: Array) ( println("Output when no argument is passed:") displayBorder() println("'*' is used as a first argument.") println("Output when first argument is passed:") displayBorder('*') println("'*' is used as a first argument.") println("5 is used as a second argument.") println("Output when both arguments are passed:") displayBorder('*', 5) )
Когато стартирате програмата, изходът ще бъде:
Изход, когато не е предаден аргумент: =============== '*' се използва като първи аргумент. Изход при предаване на първия аргумент: *************** '*' се използва като първи аргумент. 5 се използва като втори аргумент. Изход при предаване на двата аргумента: *****
Котлин назова аргумент
Преди да говорим за именуван аргумент, нека помислим за малко модификация на горния код:
fun displayBorder(character: Char = '=', length: Int = 15) ( for (i in 1… length) ( print(character) ) ) fun main(args: Array) ( displayBorder(5) )
Тук се опитваме да предадем втори аргумент на displayBorder()
функцията и използваме аргумент по подразбиране за първи аргумент. Този код обаче ще даде грешка при използване. Това е така, защото компилаторът смята, че се опитваме да предоставим 5 ( Int
стойност) на символ ( Char
тип).
За да се разреши тази ситуация, могат да се използват именувани аргументи. Ето как:
Пример: Котлин именуван аргумент
fun displayBorder(character: Char = '=', length: Int = 15) ( for (i in 1… length) ( print(character) ) ) fun main(args: Array) ( displayBorder(length = 5) )
Когато стартирате програмата, изходът ще бъде:
=====
В горната програма използваме named argument ( length = 5
), указвайки, че параметърът дължина в дефиницията на функцията трябва да приема тази стойност (няма значение позицията на аргумента).
Първият аргумент използва стойността '='
по подразбиране в програмата.