scala - 如何在 Scala 中惯用地处理默认值?

标签 scala

假设我有以下功能

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/

相关文章:

scala - 基于两列的spark join操作

scala - 如何将数组作为参数传递给 Scala 中的函数?

scala - Scala中带有接收器的函数类型

scala - Akka 中 Stash 的目的是什么?

hibernate - 当我添加 OneToMany 注释时,EntityManager 无法使用 JPA/Hibernate 进行实例化

scala - 避免在 Play 中打开未使用的数据库连接

java - Scala 无法解析构造函数

scala - 如何编写 Scalatest 测试以将列表中的值与范围相匹配?

scala - Scala 中的简单构建器模式

scala - 光滑的过滤器或不再支持逻辑操作的地方?