我編寫了一個名爲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