我正在学习 Scala 并学习有关提取器的教程。即https://www.tutorialspoint.com/scala/scala_extractors.htm
object ExtractDemo {
def main(args: Array[String]) {
val x = ExtractDemo(5)
println(x)
x match {
case ExtractDemo(num) => println(x+" is bigger two times than "+num)
//unapply is invoked
case _ => println("i cannot calculate")
}
}
def apply(x: Int) = x*2
def unapply(z: Int): Option[Int] = if (z%2==0) Some(z/2) else None
}
但这段代码无法编译。IE
scala ExtractorDemo.scala
ExtractorDemo.scala:3: error: not found: value ExtractDemo
val x = ExtractDemo(5)
^
ExtractorDemo.scala:7: error: not found: value ExtractDemo
case ExtractDemo(num) => println(x+" is bigger two times than "+num)
^
为什么它无法识别ExtractorDemo?
Scala 是一种编译语言。您应该在运行代码之前对其进行编译
您的代码可以在 Scala 3.3.3 https://scastie.scala-lang.org/DmytroMitin/eBbnjceQQXWHZ0ewNpoVbg/2和 Scala 2.13.13 https://scastie.scala-lang.org/DmytroMitin/eBbnjceQQXWHz0ewNpoVbg中运行
请参阅入门。