下面的代码取字符串的前两个字符并检查pattern是"de" or None
它返回None否则返回Test("Found")
val s =Option("abc")
val t = s.map(_.take(2))
case class Test(id:String)
t match {
case Some("de") => None
case None => None
case _ => Test("Found")
}
任何人都可以建议一个有效的案例匹配解决方案
答案 0 :(得分:2)
我想我得到你所要求的,所以让我试一试:
val condition = Option("abc").exists(_.toLower.take(2) == "de")
val output: Any = if(condition) Test("found") else None
如果false
为Option
,则第一部分会返回None
。如果字符串的前两个字母是false
,则它也会以不区分大小写的方式返回"de"
。
第二部分返回None
或Test
对象。但是,我想指出这导致Any
。您的意思是返回Option[Test]
类型吗?
答案 1 :(得分:1)
我认为,在你的片段的最后一行中,你的意思是Some(Test("Found"))
,从你对另一个答案的评论来判断。
如果是这样,这就是你要找的东西:
t.filterNot(_.take(2) == "de").map(_ => Test("Found"))