引數傳遞
預設引數的使用
可以在方法的引數中設定值作為它的預設引數值
fun reformat(str: String = "11",isTrue: Boolean = false){
println(str)
println(isTrue)
}
複製程式碼
使用預設引數在呼叫的時候就可以不傳遞引數
//使用預設引數
reformat()
複製程式碼
具名引數的使用
具名引數就是指定引數名對其賦值,這樣的好處就是在傳引數的時候不需要考慮一一對應,另外因為Kotlin的引數傳遞的靈活性,在傳遞引數時很容易出現歧義,這時候可以通過具名引數來消除歧義。
//使用具名引數,可以指定具體的引數
reformat(isTrue = false,str = "a")
複製程式碼
變長引數的使用
變長引數可以對一個引數賦多個值,需要用到vararg關鍵字
fun becomeLong(vararg args: Int,str: String){
args.forEach { println("$str $it")
}
}
複製程式碼
傳遞多個值給變長引數
becomeLong(1,2,3,4,str = "jwt")
複製程式碼
因為變長引數多個值的原因,str這個引數需要用具名引數來消除歧義
傳遞一個陣列的值給變長引數,可以使用 * 運算子來實現
var array = intArrayOf(1,2,3)
becomeLong(*array,str = "jason")
複製程式碼
使用 * 它會把陣列元素分開依次傳給變長引數
異常捕獲
Kotlin的異常的捕獲也是通過try-catch塊來捕獲的
舉個栗子,一目瞭然:
fun main() {
var args: Array<String> = Array(3){"0"} //初始化陣列,構造方法的引數(size: Int, init: (Int) -> T)
args.set(0,"2")
args.set(1,"1")
try {
var x = args[0].toInt()
var y = args[1].toInt()
println("$x + $y = ${sum(x,y)}")
}catch (e: NumberFormatException){
println("需要輸入的資料型別是整數")
}catch (e: ArrayIndexOutOfBoundsException){
println("需要輸入兩個整數")
}catch (e: Exception){
println("捕捉到程式異常")
}finally {
println("求和計算完成")
}
}
fun sum(x: Int,y: Int): Int{
return x + y
}
複製程式碼
對求和過程的出現的具體異常進行捕獲處理,無論結果如何最終都會執行finally方法塊。