Kotlin のリストを 2 つのサブリストに分割するにはどうすればよいでしょうか? 現在、私は次のようにしています:
val (first, rest) = listOf("one", "two", "three")
しかし、そうすると、最初が「1」で残りが「2」になります。私はそれらを および にしたいのfirst =["first"]
ですrest = ["two", "three"]
。
この「デストラクタ」構文を使用してもこれは可能ですか?
ベストアンサー1
構造破壊component1
は、オブジェクトに対して、、などの演算子関数を呼び出すことを意味しますcomponent2
。 の場合List
、これらは次のように定義されます。標準ライブラリの拡張機能、N 番目の要素をそれぞれ返します。
必要に応じてリストを分割し、Pair
構造化解除できる を返す独自の拡張機能を定義できます。
fun <T> List<T>.split() = Pair(take(1), drop(1))
これは次のように使用できます。
val (first, rest) = listOf("one", "two", "three").split()
println(first) // [one]
println(rest) // [two, three]
おそらく、もっと良い名前を付けたほうがsplit
賢明でしょう。