这似乎是一个简单的场景,但我对如何优雅地/功能性地解决它感到困惑。我有两个列表 val pinnedStrings: Seq[(String, Int)]
和 val fillerString: Seq[Int]
。我想合并它们,但每个固定的字符串都保证在输出列表中的配对位置。所以如果我有:
val pinnedStrings = Seq("apple" -> 1, "banana" -> 4, "cherry" -> 6)
val fillerStrings = Seq("alpha", "bravo", "charlie", "delta", "echo", "foxtrot")
那么输出应该是:
Seq("alpha", "apple", "bravo", "charlie", "banana", "delta", "cherry", "echo", "foxtrot")
假设如果没有足够的填充符到达固定字符串,我们将丢弃固定字符串。 (或者如果将所有剩余的固定字符串放在最后更简单,那也很好。)
最佳答案
或者:
scala> val pinnedStrings = Seq("apple" -> 1, "banana" -> 4, "cherry" -> 6)
pinnedStrings: Seq[(String, Int)] = List((apple,1), (banana,4), (cherry,6))
scala> val fillerStrings = Seq("alpha", "bravo", "charlie", "delta", "echo", "foxtrot")
fillerStrings: Seq[String] = List(alpha, bravo, charlie, delta, echo, foxtrot)
scala> (fillerStrings /: pinnedStrings) { case (acc, (s, i)) => ((acc take i) :+ s) ++ (acc drop i) }
res0: Seq[String] = List(alpha, apple, bravo, charlie, banana, delta, cherry, echo, foxtrot)
关于scala - 固定列表元素以定位在 Scala 中的合并列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25882433/