我的代码块目前看起来很丑陋:
for {
maybeUser <- getUser(1)
} yield {
if (maybeUser.isDefined) {
someFunction1(maybeUser.get)
} else None
}
getUser的样子:
def getUser(id: Int): Future[Option[user]]
答案 0 :(得分:4)
你应该能够:
id
这将产生for {
maybeUser <- getUser(1)
} yield {
maybeUser.map(someFunction1)
}
(其中Option[T]
是T
的返回类型),它应该是您想要的。
有关someFunction1
模式的精彩摘要,我无法高度推荐这篇文章:Your Options Don't Match
答案 1 :(得分:0)
perl -0777 -ne 'while(m/((\s|\t)+)Recent\n\1Comments\n\1Tags/g){print "$&\n";}' /path/to/file
假设someFunction1(user)返回一个Option(否则调用Some(someFunction1(user))
答案 2 :(得分:-1)
您可以尝试更具可读性。
val mayBe = getUser(1)
(for {
m <- maybe
if m.isDefined
} yield m.get //Seq(m.get)
).recover {
_=> ??? //Seq.empty[MType]
}