Kotlin提供了在函式定義中指定預設引數(引數)的工具。
如果呼叫函式而不傳遞任何引數,則使用預設引數作為函式定義的引數。 當使用引數呼叫函式時,傳遞引數將用作函式定義中的引數。
預設引數範例1:在函式呼叫中不傳遞引數
fun main(args: Array<String>) {
run()
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
執行上面範例程式碼,得到以下結果 -
parameter in function definition 5 and x
在上面的程式中,run()
函式呼叫沒有傳遞引數,它使用在函式定義中的預設引數。
預設引數範例2:在函式呼叫中傳遞一些引數
fun main(args: Array<String>) {
run(3)
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
執行上面範例程式碼,得到以下結果 -
parameter in function definition 3 and x
在上面的程式中,run()
函式呼叫帶有一個(第一個)引數,函式定義的第一個引數是使用傳遞給函式的值,它指定傳遞值為:3
。 第二個引數用作預設引數。
預設引數範例3:在函式呼叫中傳遞所有引數
fun main(args: Array<String>) {
run(99,'z')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
執行上面範例程式碼,得到以下結果 -
parameter in function definition 99 and z
由於所有引數都在run()
函式呼叫中傳遞,因此函式定義的引數使用函式呼叫中傳遞的引數。
在討論命名引數之前,先對上面的程式中做一些修改。
範例:
fun main(args: Array<String>) {
run('a')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
執行上面範例程式碼,得到以下結果 -
Error: Kotlin: The character literal does not conform to the expected type Int
在這裡,嘗試將引數'a'
從函式呼叫傳遞給函式定義的第二個引數。 但編譯器假定引數'a'
(Char型別)為第一個引數(Int
型別)傳遞,這會導致程式錯誤。
要解決上述問題,可使用命名引數。
命名引數是一個引數,在函式呼叫中定義引數的名稱。 定義函式呼叫的引數名稱,並檢查匹配函式定義中的名稱然後分配給它。
Kotlin命名為引數範例
fun main(args: Array<String>) {
run(latter='a')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
執行上面範例程式碼,得到以下結果 -
parameter in function definition 5 and a