具名参数
-
某个参数可以接受多个值
-
可以不为最后一个参数
-
如果传参有歧义,需要使用具名参数
package com.yzdzy.kotlin.nameFun
fun sum(arg1: Int, arg2: Int) = arg1 + arg2
//变长参数 和数组一模一样
fun main(vararg args: String) {
//具名参数可以交换参数
val res = sum(arg2 = 2, arg1 = 2)
val res2 = sum(arg1 = 1, arg2 = 2)
println(res)
println(res2)
//变长参数 和数组一模一样
for (arg in args) {
println(arg)
}
val array = intArrayOf(1, 3, 4, 5)
val array1 = arrayListOf(1, 3, 4, 5)
hello(1.0, 2, 312, 3, string = "helo")
// * 把array 展开。
hello(1.0, *array, string = "helo")
//只支持list 不支持array
// hello(1.0, *array1, string = "helo")
}
//变长参数 vararg
fun hello(double: Double, vararg ints: Int, string: String) {
ints.forEach(::println)
}
// * 把array 展开。
- 这个操作符叫Spread Operator
- 只支持展开Array
- 只用于变长参数列表的实参
- 不能重载
变长参数
vararg 修饰 类似于java的可变参数
默认参数
package com.yzdzy.kotlin.nameFun
//变长参数 和数组一模一样
fun main(vararg args: String) {
// 由于第一个参数有默认参数 所以后面的参数要加具名 也可以后面设置默认参数 前面就不用加具名参数了
hello(ints = *array, string = "helo")
}
//变长参数 vararg
fun hello(double: Double = 3.0, vararg ints: Int, string: String) {
ints.forEach(::println)
}
来源:oschina
链接:https://my.oschina.net/u/4324735/blog/4314327