Kotlin学習シリーズの:可変パラメータ
1589 ワード
Kotlinの可変パラメータ Javaでの可変パラメータの使用をレビューする: 可変パラメータは本質的に配列であり、ある方法で可変パラメータを宣言すると、任意の離散パラメータ値を伝達することも、配列を伝達することもできる. 可変パラメータは、方法の最後のパラメータである必要がある Kotlinでは、構文フォーマットが異なり、可変パラメータを表す独自のキーワードvarargがあり、構文形式は以下の通りです. JavaとKotlinの可変パラメータの比較: 第1条についてはargsをJAvaClassは印刷され、バイトコードレベルでは配列であることがわかりますが、可変パラメータを持つメソッドを呼び出すと、離散したパラメータ値しか伝達されず、配列を直接伝達すると構文エラーが報告されます.しかし、手元に配列がある場合、伝達するには演算子*(spread operator):配列を個々の個体に分散して に伝達することに相当する.第2条については、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) {
test("a", "b", "c", "d")
}
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")