在本文中,您將在示例的幫助下了解默認參數(shù)和命名參數(shù)。
在Kotlin中,您可以為函數(shù)定義中的參數(shù)提供默認值。
如果通過傳遞的參數(shù)調用該函數(shù),則將這些參數(shù)用作參數(shù)。但是,如果在不傳遞參數(shù)的情況下調用該函數(shù),則會使用默認參數(shù)。
函數(shù)foo()有兩個參數(shù)。參數(shù)提供有默認值。但是,foo()通過在上述程序中傳遞兩個參數(shù)來調用。因此,不使用默認參數(shù)。
在foo()函數(shù)中,letter 和 number的值分別為'x' 和 2。
在這里,只有一個(第一個)參數(shù)傳遞給foo()函數(shù)。 因此,第一個參數(shù)使用傳遞給函數(shù)的值。 但是,第二個參數(shù) number 將采用默認值,因為在函數(shù)調用期間未傳遞第二個參數(shù)。
在foo()函數(shù)中,letter和number的值分別為 'y' 和 15。
在這里,在不傳遞任何參數(shù)的情況下調用foo()函數(shù)。 因此,這兩個參數(shù)都使用其默認值。
在foo()函數(shù)中,letter 和 number 的值分別為 'a' 和 15。
fun displayBorder(character: Char = '=', length: Int = 15) { for (i in 1..length) { print(character) } } fun main(args: Array<String>) { println("沒有傳遞參數(shù)時的輸出:") displayBorder() println("\n\n'*' 作為第一個參數(shù).") println("傳遞第一個參數(shù)時的輸出:") displayBorder('*') println("\n\n'*' 用作第一個參數(shù).") println("5用作第二個參數(shù).") println("同時傳遞兩個參數(shù)時的輸出:") displayBorder('*', 5) }
運行該程序時,輸出為:
沒有傳遞參數(shù)時的輸出: =============== '*' 作為第一個參數(shù). 傳遞第一個參數(shù)時的輸出: *************** '*' 作為第一個參數(shù). 5作為第二個參數(shù). 同時傳遞兩個參數(shù)時的輸出: *****
在討論命名參數(shù)之前,讓我們考慮對上面的代碼進行一些修改:
fun displayBorder(character: Char = '=', length: Int = 15) { for (i in 1..length) { print(character) } } fun main(args: Array<String>) { displayBorder(5) }
在這里,我們嘗試將第二個參數(shù)傳遞給displayBorder()函數(shù),并對第一個參數(shù)使用默認參數(shù)。但是,此代碼將給出一個使用錯誤。這是因為編譯器認為我們試圖為字符(Char類型)提供5(Int值)。
為了解決這種情況,可以使用命名參數(shù)。方法如下:
fun displayBorder(character: Char = '=', length: Int = 15) { for (i in 1..length) { print(character) } } fun main(args: Array<String>) { displayBorder(length = 5) }
運行該程序時,輸出為:
=====
在上述程序中,我們使用命名實參(length = 5)來指定length函數(shù)定義中的參數(shù)應采用此值(與實參的位置無關)。
第一個參數(shù)字符使用程序中的默認值 '='。