Почему компилятор Scala говорит, что копия не является членом моего класса case?

Во-первых, это в Scala 2.8, поэтому должен быть там! знак равно

Я работаю над объектами Lift Javascript и хочу получить следующее:

case class JsVar(varName: String, andThen: String*) extends JsExp {
  // ...
  def -&(right: String) = copy(andThen=(right :: andThen.toList.reverse).reverse :_*)
}

К сожалению, я получаю следующую ошибку компилятора:

[error] Lift/framework/web/webkit/src/main/scala/net/liftweb/http/js/JsCommands.scala:452: not found: value copy
[error]     def -&(right: String) = copy(andThen=(right :: andThen.toList.reverse).reverse :_*)
[error]

Класс case имеет свойства, поэтому должна быть копия , верно?

Если я попробую this.copy , я получу практически ту же ошибку:

[error] Lift/framework/web/webkit/src/main/scala/net/liftweb/http/js/JsCommands.scala:452: value copy is not a member of net.liftweb.http.js.JE.JsVar
[error]     def -&(right: String) = this.copy(andThen=(right :: andThen.toList.reverse).reverse :_*)
[error]

Почему это и как я могу использовать copy в моем классе case метод? Или идея, что копия - это то, что компилятор добавляет после объявления моих методов?

Должен ли я просто сделать это?

case class JsVar(varName: String, andThen: String*) extends JsExp {
  // ...
  def -&(right: String) = JsVar(varName, (right :: andThen.toList.reverse).reverse :_*)
}
5
задан pr1001 9 July 2011 в 15:31
поделиться