scala - 在 Scala 中有一个 'empty' 的 case 语句是什么意思?

标签 scala syntax

编译器如何解释这个?:

foo match {
  case bar: Bar => println("First case statement")
  case _ => 
}

第二个案例是空的,没有任何东西可以返回。

最佳答案

表示返回Unit :

val res: Unit = new foo match {
  case bar: Bar => println("First case statement")
  case _ =>
}

如果您更改语句以返回某些内容而不是 println (返回 Unit ):
val res: Any = new foo match {
  case bar: Bar => "it's a bar"
  case _ =>
}

现在编译器已经推断出 Any因为它是 String 之间的第一个常见父类(super class)型和 Unit .

请注意,您的大小写匹配是错误的,因为匹配 bar单独意味着捕获所有变量,您可能想要bar: Bar .

关于scala - 在 Scala 中有一个 'empty' 的 case 语句是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843677/

相关文章:

powershell - 在高级 PowerShell 函数中声明多个别名

bash - Bash 中的表达式递归级别超出错误

java - 为什么我不能将方法引用直接分配给 Object 类型的变量?

syntax - ffmpeg:复制所有音频流并再添加两个

scala - 将 Kafka 消费者和生产者集成到一个函数中

function - 如何在 Scala 中的案例类中添加自定义行为以复制函数?

scala - 如何使用 java 8 的流从 scala 2.11 收集?

Scala 通过表达式向数据框添加新列

c - 为什么常量的语法中没有符号字符?

scala - 使用 Spark Scala 进行透视后按名称选择具有多个聚合列的列