case class Person(@BsonProperty("first_name") firstName:Option[String],@BsonProperty("second_name") secondName:Option[String],@BsonProperty("person_age") var age:Int)
val me = Some(Person(Some(Ambareesh),Some(B),23))
Or
val me = None
Or
val me = Some(Person(Some(Ambareesh),None,23))
Or
val me = Some(Person(None,None,23))
someOperation(me.secondName / None) //How can I implement this behavior in single line.
someOperation(me.firstName / None)
def someOperation(name:Option[String]){
//Do ...
}
我对方法someOperation
的参数(Person的实例)表示怀疑。参数本身是Option值,而fields也是Options。如果其中任何一个是None
(argument或argument.fieldName),我希望None
返回,否则字段值为Some(fieldValue)。有可能吗?
答案 0 :(得分:3)
答案 1 :(得分:2)
如果您的someOperation
返回了一个也可以使用for
理解的选项。
val result: Option[String] = for {
person <- me
firstName <- someOperation(person.firstName)
secondName<- someOperation(person.secondName)
} yield <use firstName, secondName here>
这将为您提供您想要计算的结果或None
。
答案 2 :(得分:1)
据我了解,您需要提取人员字段并将其传递给方法someOperation。正确?
如果是这样,您可以使用模式匹配:
someOperation(
me match {
case Some(person) => person.firstName
case None => None
}
)