(Char、Int)パーのこのリストoXがあります(一意のChar値のみを持つペアが含まれています)
List(( ,3), (d,1), (e,3), (h,3), (i,1) , (l,3), (o,2), (r,2), (t,1), (w,1))
このリストを2つに分割する必要があります。1つは「d」文字を持つペアを含み、もう1つは残りです。
そこで、パーティションとスパンを試しましたが、スパンが期待どおりに機能しないことがわかりました。結果は次のとおりです(scalaワークシートからコピー)
val myPartition = oX.partition(e => e._1 == 'd') > myPartition : (List[(Char, Int)], List[(Char, Int)]) = (List((d,1)),List(( ,3), (e,3), (h,3), (i,1), (l,3), (o,2), (r,2), (t,1), (w,1)))
val mySpan = oX.span(e => e._1 == 'd') > mySpan : (List[(Char, Int)], List[(Char, Int)]) = (List(),List(( ,3), (d,1), (e,3), (h,3), (i,1), (l,3), (o,2), (r,2), (t,1), (w,1)))
同じ述語functinoパーティションが与えられたときに期待される結果が得られるのに、spanが最初のリストとして空のリストを、2番目のリストとして元のコピーを与える理由に戸惑います
のドキュメントからspan
:「要素がすべて指定された述語を満たすリストの最長プレフィックスと、リストの残りの部分を返します。」
したがって、ここでspan
期待される結果が得られます。リストの最初のタプルには文字がないため、d
各タプルに文字d
が含まれるリストの最長のプレフィックスは、実際には空のリストです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加