我有一个Map [String,String]
如何使用flatMap简单地表达这个表达式?
val carNumbers = carMap.keys.map(k => Try(k.stripPrefix("car_number_").toInt)).toList.filter(_.isSuccess)
注意:我想删除Failure / Success包装器,只需要一个List [Int]。
答案 0 :(得分:2)
您似乎只想将Try
转换为Option
:
for {
key <- carMap.keys
t <- Try(key.stripPrefix("car_number_").toInt).toOption
} yield t
这将导致Iterable
,您可以使用.toList
方法将其转换为列表。
你也可以像这样使用oneliner:
carMap.keys.flatMap(k => Try(k.stripPrefix("car_number_").toInt).toOption)
答案 1 :(得分:0)
考虑将collect()
与部分功能一起使用:
carMap.keys
.collect( k =>
Try(k.stripPrefix("car_number_").toInt) match {
case Success(num) => num
}
)
这将返回Iterable[Int]
,其值可以被剥离并转换为Int
(假设这是您要查找的内容)。