たとえば、List[(Int, Int, Foo)]
など、ある値に関連付けられた範囲のリストがあるとします。範囲は互いに素であることが保証されているため、重複することはありません。範囲は、指定された文字列の全範囲をカバーしません。文字列を(String, Option[Foo])
のセクションに分割できるように、各文字列の一部にそれぞれFoo
を関連付ける必要があります。リストに欠損値を挿入する
私の考えでは、このList[(Int, Int, Foo)]
をList[(Int, Int, Option[Foo])]
に変換して、欠落している範囲がすべて記入され、Noneと関連付けられるようにします。この新しいリストをマッピングして、各Foo
を文字列の一部と関連付けることができます。私はfilledInValues
に、またはinput
からres
にinput
から取得する必要がありますどのよう
いくつかの具体的なコード
case class Foo(i: Int)
val str = "a" * 99 // A random string of length 99
val input = List((5, 10, Foo(1)), (56, 60, Foo(2))
// ???
val filledInValues = List(
(0, 4, None),
(5, 10, Some(Foo(1))),
(11, 55, None),
(56, 60, Some(Foo(2))),
(61, 98, None)
)
val res = filledInValues map { case (start, end, f) =>
(str.substring(start, end), f)
}
?