Vegetables.scala라는 스칼라 소스 파일을 작성했습니다. 아래의 코드에서 달성하고자하는 것은 import 절이 어떻게 작동하는지 이해하는 것입니다. 필자는 Eclipse에서이 프로그램을 입력하고 Eclipse 기반 REPL을 시작했습니다. 야채를 확장하는 Spinach라는 새로운 객체를 만들고이를 val에 할당하고 결국 Vegetable 객체의 showColor 메소드를 호출하여 Spinach 객체를 전달합니다. 나는 그 예제가 터무니없는 소리를 낸다는 것을 알고 있지만, 지금은 스칼라의 개념/메커니즘을 이해하려고 노력하고 있습니다. 이 목적을 위해 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에 할당하는 올바른 방법이 무엇인지 이해하려고합니다. 그 과정이 끝나면 그 값을 매개 변수로 전달하기 바랍니다. 그런 다음 showColor 내부에서 가져 오기 절을 테스트하여 veggie 매개 변수의 멤버를 실제로 가져올 지 확인합니다.
'val s = Seq' - 변수에 싱글 톤 객체를 할당 할 수 있습니다. – axel22
그건 내가 알지 못했던 사실이다. 시금치의 변수 할당에 대한 귀하의 업데이트에 감사드립니다 – ilango
감사합니다, axel22 – ilango