代码之家  ›  专栏  ›  技术社区  ›  JAL

Scala:为什么这个模式匹配代码抛出了indexOutboundsException?

  •  4
  • JAL  · 技术社区  · 14 年前

    我在看一个教程,在 http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-4

    我知道,本教程是2008年1月的,但是如果这有什么不同的话,我将使用Scala 2.8.0。

    class Color(val red:Int, val green:Int, val blue:Int)
    
    case class Red(r:Int) extends Color(r, 0, 0)
    case class Green(g:Int) extends Color(0, g, 0)
    case class Blue(b:Int) extends Color(0, 0, b)
    
    def printColor(c:Color) = c match {
      case Red(v) => println("Red: " + v)
      case Green(v) => println("Green: " + v)
      case Blue(v) => println("Blue: " + v)
    
      case col:Color => {
        print("R: " + col.red + ", ")
        print("G: " + col.green + ", ")
        println("B: " + col.blue)
      }
    
      case null => println("Invalid color")
    }
    

    当把这个输入到解释器时,它会产生

    线程“main”java.lang.IndexOutboundsException中的异常 在scala.collection.LinearSeqOptimized$class.apply上(LinearSeqOptimized.scala:53) 在scala.collection.immutable.List.apply上(List.scala:45)

    再加上185行追踪,解释器退出。

    这个错误消息是什么意思,有人能告诉我上面的代码有什么问题吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   psp    14 年前

    像这样的消息总是个错误。明确地 https://lampsvn.epfl.ch/trac/scala/ticket/4025 .