文章19 | 阅读 10449 | 点赞0
Kotlin中的可变参数
public class VarArgsTest {
public static void main(String[] args) {
Test test = new Test();
// 调用方式一
System.out.println(test.sum(1, 2, 3, 4, 5));
int[] arrays = {1, 2, 3, 4, 5};
// 调用方式二
System.out.println(test.sum(arrays));
}
}
class Test {
public int sum(int... args) {
int sum = 0;
for (int arg : args) {
sum += arg;
}
return sum;
}
}
注意点:
fun test(vararg args: String) {
args.forEach {
println(it)
}
}
调用:
fun main(args: Array<String>) {
test("a", "b", "c", "d")
}
对比Java和Kotlin中的可变参数:
至于第1条,你如果将args的.javaClass打印出来,发现它在字节码层面上还是一个数组,但是当我们调用带有可变参数的方法时,只能传递离散的参数值,直接传递数组会报语法错误。但是当我们手头上就是一个数组,要想传递,就需要借助运算符*(spread operator):相当于将数组分散成一个个的个体再传入进去
val array = arrayOf("a", "b", "c", "d")
test(*array)
fun test(vararg args: String, param: String) {
args.forEach {
println(it)
}
println(param)
}
但是在这种情况下,传递参数有一个要求: 对于非可变参数,需要使用命名参数的形式来调用:
test3(*array, param = "hello")
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/xlh1191860939/article/details/82109086
内容来源于网络,如有侵权,请联系作者删除!