Kotlin之可变参数、中缀调用和解构声明

2019-01-08  本文已影响24人  满天星爱我

可变参数

当你调用一个函数创建列表时,可以传递任意个数的参数给它:

val list = listOf("a","b","c","d")

点进listOf方法内部你会发现

public fun <T> listOf(vararg elements: T): List<T> {...}

你可能对Java中的可变参数已经很熟悉了。Kotlin的可变参数与Java类似,但语法略有不同:

中缀调用、解构声明

先看一个例子,使用mapOf函数创建一个map

val map = mapOf(1 to "a",2 to "b",3 to "c")

这段代码中的单词to不是内置结构,而是一种特殊的函数调用,被称为中缀调用

以下这两种方式是等价的:

"A".to(1) //一般to函数的调用
"A" to 1 //使用中缀符号调用to函数

中缀函数可以与只有一个参数的函数一起使用,并且普通函数和扩展函数都可以使用。to函数会返回一个Pair类型的对象

infix fun Any.to(other:Any) = Pair(this,other)

可以直接使用Pair的内容来初始化两个变量,这个功能被称为解构声明

val (number,name) = 1 to "one"

to函数创建一个pair,然后用解构声明来展开

也适用于循环,例如使用withIndex函数的实现

val list = listOf("A","B","C","D")
for ((key,value) in list.withIndex())
    println("key = $key   value = $value")
上一篇下一篇

猜你喜欢

热点阅读