【问题标题】:Auto-unboxing in Scala pattern-matchScala模式匹配中的自动拆箱
【发布时间】:2011-10-11 16:27:01
【问题描述】:

在以下代码中,我收到一个编译错误,指出我在“x”上存在类型不匹配:

val someRef: java.lang.Long = 42L
someRef match {
  case x: Long => println("The answer: " + x)
  case _ => println("Unknown")
}

如何让 Scala 在 match 语句中自动拆箱 someRef?

【问题讨论】:

    标签: scala pattern-matching unboxing


    【解决方案1】:

    类型系统不知道这个级别的拳击。但它确实知道,如果有一个Any,一个装箱的Long 真的(大概)应该只是一个Long(来自类继承树的AnyVal 部分)。所以:

    val someRef: java.lang.Long = 42L
    (someRef: Any) match {
      case x : Long => println("The answer is " + x)
      case _ => println("What answer?")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-31
      • 2016-05-17
      • 2021-12-17
      • 2014-02-05
      • 2016-03-29
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多