Vegetables.scalaというScalaソースファイルを作成しました。以下のこのコードから私が達成しようとしているのは、インポート句がどのように機能するかを理解することです。このプログラムをEclipseで入力し、EclipseベースのREPLを開始しました。私がやりたいのは、Vegetableを拡張するSpinachという新しいオブジェクトを作成し、それをvalに割り当て、最終的にオブジェクトVegetableのshowColorメソッドを呼び出して、Spinachオブジェクトを渡します。例がばかげているように聞こえることは知っていますが、私は今、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パラメーターのメンバーが実際にインポートされるかどうかを確認します。