我從兩個串列中進行了相同的操作,并希望將它們放在一個地圖函式中,而不是兩個。
val messages1 = list.map {
spConverter.mapToSppmFromPs(it)
}
val messages2 = list.map {
spConverter.mapToSpFromPs(it)
}
有沒有辦法將這兩個操作放在一張地圖中?
uj5u.com熱心網友回復:
該函式只能創建一個串列,map因此您不能創建兩個串列。也許這段代碼適合:messages1messages2
val (messages1, messages2) = list
.map { Pair(spConverter.mapToSppmFromPs(it), spConverter.mapToSpFromPs(it)) }
.unzip()
首先,該map函式創建一個對串列,然后 unzip 函式在該串列上運行并創建您想要的兩個串列。
除非您list實際上只能迭代一次,否則我更喜歡您的原始代碼。
uj5u.com熱心網友回復:
嗯,不是真的。
.map回傳一個結果。所以是的,你可以有:
val messages1 = mutableListOf()
val messages2 = list.map {
messages1.add(spConverter.mapToSppmFromPs(it))
spConverter.mapToSpFromPs(it)
}
但這只是丑陋的。我認為在代碼中的某處運行 forEach 會更好。
uj5u.com熱心網友回復:
如果您列出要應用的函式,則可以遍歷該串列并將每個函式依次應用到串列中。使用解構宣告,您可以將生成的串列串列分成兩個變數。
val functions = listOf(spConverter::mapToSppmFromPs, spConverter::mapToSpFromPs)
val (messages1, messages2) = functions.map { f ->
list.map { f(it) }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/518416.html
標籤:科特林
