我似乎找不到正確的解決方案。嘗試將陣列串列添加到另一個陣列。憑借我的 Python 背景,這很容易完成,但在 Kotlin 中則不然。
fun main() {
val even = arrayOf(2, 4, 6)
val odd = arrayOf(1, 3, 5)
val arr1 = arrayOf(even, odd)
val extra = arrayOf(7,7,7)
val arr2 = arrayOf(arr1, extra)
print(arr2.contentDeepToString())
}
執行上述代碼時,我收到...
[[[2, 4, 6], [1, 3, 5]], [7, 7, 7]]
我想要實作的是這個......
[2, 4, 6], [1, 3, 5], [7, 7, 7]
uj5u.com熱心網友回復:
要將事物添加到事物陣列并生成新陣列,請使用plusElement:
val arr2 = arr1.plusElement(extra)
這不僅適用于陣列,也適用于任何Iterables,即Lists、Sets 等。
uj5u.com熱心網友回復:
你明白為什么會得到這樣的結果嗎?arrayOf(items)創建一個包裝這些專案的新陣列,arrayOf(even, odd)一個包含兩個陣列的陣列也是如此。然后創建另一個陣列,其中包含該陣列陣列和另一個單個陣列。你邊走邊嵌套它們
Sweeper 的答案可能就是您想要的,但是有很多方法可以組合集合、展平序列等。就像您可以做的一件事一樣,您可以使用*運算子(“擴展運算子”)來“解包”您的陣列,這樣您就可以得到專案改為:
// unpack arr1 from an array of arrays, into just those arrays
// equivalent to arrayOf([2, 4, 6], [1, 3, 5], extra)
val arr2 = arrayOf(*arr1, extra)
print(arr2.contentDeepToString())
>> [[2, 4, 6], [1, 3, 5], [7, 7, 7]]
還有flatMap,flatten等等——最好的選擇取決于你在做什么!
此外,當你說你想要這個時:
[2, 4, 6], [1, 3, 5], [7, 7, 7]
這只是一堆值,不包含在任何東西中,所以我們假設你想要這個:
[[2, 4, 6], [1, 3, 5], [7, 7, 7]]
它們保存在一個陣列中(或者它可以是一個串列)。您可以使用擴展運算子將其解包為一堆值,但您所能做的就是將其作為可變數量的引數傳遞給函式(這就是 中發生的事情arrayOf)
uj5u.com熱心網友回復:
我假設您想獲得以下陣列:
[[2, 4, 6], [1, 3, 5], [7, 7, 7]]
Kotlin 中有一個 用于Arrays的覆寫(加號)運算子,您可以使用它來添加陣列:
val arr2 = arr1 extra
結果陣列arr2將包含原始陣列的arr1所有元素,然后是陣列的所有元素extra。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385824.html
