やりたいこと
【Java】Byte配列を無限に連結したい
のKotlin版。ByteArrayを無限に連結できる1つの関数が欲しい。
追記
コメントいただきましたがreduceであっさりできますね。ありがとうございます。
fun concatArrays(vararg arrays: ByteArray): ByteArray =
arrays.reduce { acc, cur -> acc + cur }
結果
可変長引数で順にPlusすることでひとまず実現。Kotlinの可変長引数はArrayに格納されているため下記では
arrays
はArray<ByteArray>
となる。もっとスマートな方法もありそう。
fun concatArrays(vararg arrays: ByteArray): ByteArray{
var result = byteArrayOf()
arrays.forEach { array ->
result += array
}
return result
}
fun main(args: Array<String>) {
val v1 = byteArrayOf(1, 2)
val v2 = byteArrayOf(3, 4, 5)
val v3 = byteArrayOf(6, 7, 8, 9)
println(Arrays.toString(concatArrays(v1)))
println(Arrays.toString(concatArrays(v1, v2)))
println(Arrays.toString(concatArrays(v1, v2, v3)))
}
Output
[1, 2]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9]