はのは、私はタプルのリストを持っているとしましょう文字列:最善の方法
def getIndex(s: Seq[String], e: Option[String]): Option[Int] =
if (e.isEmpty) None
else Some(s.indexOf(e.get))
は今、私はgetIndex
でxs
の上にマッピングし、私だけが有効なインデックスを見つけたものを返すようにしようとしています。これを行う1つの方法は、次のとおりです。
xs.map{case (s, e) => {
val ii = getIndex(s, e) // returns an Option
ii match { // unpack the option
case Some(idx) => (e, idx)
case None => (e, -1) // give None entries a placeholder with -1
}
}}.filter(_._2 != -1) // filter out invalid entries
この方法は、私にとっては非常に冗長であり、厄介です。 flatMap
は、インデックスの代わりにタプルを返すので、ここでは機能しません。これを行う慣用方法は何ですか?
そのうちの一つがこれですflatMap。あなたのSome()ケースの戻りリスト((e、idx))とNoneの場合はNilを返す –