Scala:如何处理许多可以为 None 的参数

标签 scala option optional-parameters

现在我有很多参数都可以没有,我想为整个表达式分配一个默认值。

现在我正在做类似的事情

var name: Option[String] = None
var surname: Option[String] = Some("Smith")

val fullName:String = {
  name.map { name => 
    surname.map { surname => 
      surname + ", " + name
    }.getOrElse("unknown")
  }.getOrElse("unknown")
}

但这有点太冗长了。我想知道处理它的更惯用和优雅的方式是什么,理想情况下它应该是这样的(当然,它是伪代码!):
val fullName = (name + ", " + surname).getOrElse("unknown")

或类似的东西...

(只是避免双重 .getOrElse 会很棒......)

最佳答案

这个怎么样

scala> val fullName = (for(n <-name;s <-surname) yield n + s).getOrElse("unknown")  
fullName: String = unknown

关于Scala:如何处理许多可以为 None 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874883/

相关文章:

java - 不覆盖接口(interface)默认实现时编译失败

node.js - ExpressJS 末尾的参数个数可变

c# - 通过反射调用带有可选参数的方法

scala - 将 2 个选项合并为 1 个

postgresql - Play 2's anorm can' t 在 postgresql 上工作

f# - 强制 F# 类型的字段为空

javascript - 从标签选择选项打印值

scala - 使用Scalaz将选项列表转换为列表选项

C# 选择一种与预期的方法不同的方法,具有可选参数和多级继承

scala - Kafka 消费者不返回任何事件