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