我想將一個串列分成 2 個串列。一個包含除最后一個之外的所有元素。另一個包含最后一個元素的串列。
如果串列大小大于 1,這可以正常作業。
val initialList = listOf("1", "2", "3", "4")
//val initialList = listOf("1")
val listOfAllElementsExceptLastElement = initialList
.dropLast(1)
.map {
//do some mapping logic
}
val listOfLastElement = initialList
.takeLast(1)
.map {
//do some mapping logic
}
但是,如果串列大小為 1,那么我希望將其填充到第一個串列中,而不是第二個串列中。是否可以在不使用 if 條件的情況下執行此操作?
如果我使用if條件,那么我需要復制代碼listOfAllElementsExceptLastElement并且我試圖避免這種情況。
uj5u.com熱心網友回復:
我會使用chunked它,并為這種情況添加一個特殊size <= 1情況。通過使用解構宣告,您可以同時分配兩個串列,并避免重復邏輯。
val (head, tail) = if (list.size > 1) {
list.chunked(list.size - 1)
} else {
listOf(list, emptyList())
}
uj5u.com熱心網友回復:
您可以根據初始串列的大小計算最后一個元素的數量,而無需重復代碼:
val lastN = if (initialList.size > 1) 1 else 0
val listOfAllElementsExceptLastElement = initialList.dropLast(lastN)
val listOfLastElement = initialList.takeLast(lastN)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512676.html
下一篇:在javascript中創建條件
