具名引數就是在呼叫函式時,給函式的實參附上形參:
fun
sum(arg1: int, arg2: int)
= arg1 + arg2
funmain
(vararg args: string)
使用具名引數可以把實參精確的傳遞給指定形參,因此具名引數可以不用按順序傳入。
vararg
可以讓某個引數接收多個值,vararg
修飾的引數稱為變長引數:
fun
hello
(vararg ints: int, string: string)
funmain
(vararg args: string)
當變長引數需要傳入乙個陣列時,可以使用展開操作符*
,*
會將陣列展開後一一傳入:
val array =
intarrayof(1
,2,3
,4,5
)hello
(*array, string =
"hello"
)// vararg變長引數場景下,*號可以把array陣列展開,但不支援list
展開操作符*
有以下幾個特點:
預設引數,即可以為函式任意位置的引數指定預設值:
fun
say(age: int =
20, name: string, height: float)
funmain
(vararg args: string)
如果預設引數導致傳參出現歧義時,需要使用具名引數。換句話說,就是預設引數後面的引數需要使用具名引數傳值。
借助pair
和triple
可以實現函式返回多值(注:偽多返回值),因為pair
和triple
支援解構
語法:
fun
main
(vararg args: string)
funmultireturnvalues()
: pair
funmultireturnvalues
(height: double)
: triple
kotlin 支援to
是中綴表示式,返回的就是pair
,也就是 map 裡的鍵值對。
try...catch
或try...catch...finally
捕獲異常,catch 分支匹配異常型別,finally 無論**是否丟擲異常都會執行:
try")
}catch
(e: numberformatexception)
catch
(e: arrayindexoutofbound***ception)
catch
(e: exception)")
}finally
跟 if、when 一樣,try...catch
也可以是表示式,可以用來賦值:
Kotlin藝術探索之引數和異常
預設引數的使用 可以在方法的引數中設定值作為它的預設引數值 fun reformat str string 11 istrue boolean false 複製 使用預設引數在呼叫的時候就可以不傳遞引數 使用預設引數 reformat 複製 具名引數的使用 具名引數就是指定引數名對其賦值,這樣的好處...
異常與引數傳遞
把乙個物件傳遞給函式或乙個物件呼叫乙個虛函式與把乙個物件作為異常丟擲 之間的區別 第一,異常物件在傳遞時總是被進行拷貝 當通過傳值方式捕獲時,異常物件被拷貝兩次,物件作為引數傳遞給函式時不一定需要拷貝。第二,物件作為異常丟擲與作為引數傳遞給函式相比,前者型別轉換比後者少 前者只有兩種轉換形式 最後一...
kotlin隨筆 引數困惑
引數 t r map 函式把乙個值對映為另乙個值 map 接受 乙個函式,該函式有個引數t inline fun array.map transform t r list val list listof 1,2,3,4 val newlist list.map 結果 newlist false,tr...