我编写了一个名为 Vegetables.scala 的 Scala 源文件。我试图从下面的代码中完成的是了解导入子句的工作原理。我在 Eclipse 中输入了这个程序并启动了基于 Eclipse 的 REPL。我想做的是创建一个名为 Spinach 的新对象,它扩展了蔬菜,将其分配给一个 val 并最终调用对象蔬菜的 showColor 方法,将菠菜对象传递给它。我知道这些例子听起来很荒谬,但我现在只是试图理解 Scala 的概念/机制。为此,我在 REPL 中做了以下工作:
所以这就是我在 REPL 上所做的并得到一个错误。
import com.att.scala.Vegetables._
import java.awt.Color
val obj = object Spinach extends Vegetable { val name = "Spinach" val color = Color.GREEN }
<console>:1: error: illegal start of simple expression
val obj = object Spinach extends Vegetable { val name = "Spinach" val color = Color.GREEN }
^
Vegetable.scala 的代码如下:
package com.att.scala
import java.awt.Color
trait Vegetable {
val name: String
val color: Color
}
object Vegetables {
object Asparagus extends Vegetable {
val name = "Asparagus"
val color = Color.GREEN
}
object Carrot extends Vegetable {
val name = "Carrot"
val color = Color.ORANGE
}
val veggiePlatter = List(Asparagus, Carrot)
def showColor(veggie: Vegetable) {
import veggie._
println("Entered showColor")
import veggie._
println("veggie color is " + color)
}
}
什么可以解释这个错误?首先,我试图了解在 REPL 上创建对象然后将其分配给 val 的正确方法是什么。一旦解决了问题,我希望将该 val 传递给参数。然后,我想测试 showColor 中的 import 子句,看看它是否确实导入了 veggie 参数的成员。