假设我有以下功能
def getHost():Option[String] = ...
def getPort():Option[Int] = ...
现在,如果这些函数返回 None,我想使用默认值。
def makeURL() = {
val host = getHost() getOrElse "localhost"
val 端口 = getPort() getOrElse 8080
java.net.URL("http", 主机, 端口, "myPath")
}
不幸的是,这段代码在 Scala 中看起来并不习惯。我更喜欢 makeURL
更像是一个函数组合。你会怎么改makeURL
?
最佳答案
我不会改变它。没关系。这个语法的好处是它是 简洁 .
当然,你可以用这样的纯超功能方法来改变它:
val host = getHost match {
case Some(h) => h
case None => "localhost"
}
但是你会得到四行代码,而不是一行。
关于scala - 如何在 Scala 中惯用地处理默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508077/