在一個漂亮的查詢我:如何去除.isDefined在下面的斯卡拉片斷
def getAbc(userId: Option[Int], levelId: Option[Int]): List[User] = {
val q = for {
m <- users if m.approved &&
userId.isDefined && m.userId ==== userId.get && levelId.isDefined && m.levelId === levelId.get
} yield m
q.list()
}
我不喜歡我怎麼使用isDefined並在上面不用彷徨,我該怎麼刪除?
val user: Option[User] = ....
if(user.isDefined) {
val productSales:List[Product] = getProducts(user.get.id)
val isBoss = (user.get.levelId.isDefined && (user.get.levelId.get == 10))
}
在上面,我有2個級別,如果isDefined檢查,我怎麼能繞過這種類型的模式?
注意'opt.isDefined && opt.get == x'等效於'opt.exists(_ == x)'。 – 2014-12-02 03:20:40
...相當於'opt.contains(x)',對嗎? – dhg 2014-12-02 03:51:31
@dhg好的,但是'==='不能使用,等等。 – 2014-12-02 04:19:30