Kotlin預設和命名引數


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()函式呼叫中傳遞,因此函式定義的引數使用函式呼叫中傳遞的引數。

Kotlin命名引數

在討論命名引數之前,先對上面的程式中做一些修改。

範例:

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