我编写了一个名为Vegetables.scala的Scala源文件。我试图从下面的代码中完成的是了解import子句是如何工作的。我在Eclipse中输入了这个程序并启动了基于Eclipse的REPL。 我想要做的是创建一个名为Spinach的新对象,该对象扩展了Vegetable,将其分配给val并最终调用对象Vegetable的showColor方法,将Spinach对象传递给它。我知道这些例子听起来很荒谬,但我现在只是试图理解Scala的概念/机制。为此,我在REPL中做了以下操作:如何使用Scala导入子句从方法参数导入
所以这就是我在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参数的成员。
'val s = Seq' - 你可以给一个变量分配一个单例对象。 – axel22
这是我不知道的事实。感谢您将菠菜分配给变量的更新 – ilango
谢谢,axel22 – ilango