javaInterface
会返回Object
或null
。
期望:Some(String)
或None
。
我怎样才能比
更好地写出来for {
o <- Option(javaInterface.getValue) if o.isInstanceOf[String]
}
yield o.asInstanceOf[String]
简单模式匹配不是选项monad的解决方案
for {
a <- Option(javaInterface.getValue)
o <- Option(a.getValue) if o.isInstanceOf[String]
}
yield o.asInstanceOf[String]
答案 0 :(得分:5)
您可以使用collect
匹配类型:
for {
o <- Option(javaInterface.getValue).collect({case s: String => s})
} yield o
答案 1 :(得分:1)
等同于collect
,请考虑filter
,例如如下,
Option(javaInterface.getValue).filter { case s: String => s }