加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么Scala编译器说该副本不是我的case类的成员?

发布时间:2020-12-16 09:56:26 所属栏目:安全 来源:网络整理
导读:首先,这是在 Scala 2.8中,所以它应该在那里! =) 我正在研究Lift的Javascript对象,我希望得到以下内容: case class JsVar(varName: String,andThen: String*) extends JsExp { // ... def -(right: String) = copy(andThen=(right :: andThen.toList.revers
首先,这是在 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类有属性,所以应该有一个copy方法,对吗?

如果我尝试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]

为什么这样,我如何在我的case类方法中使用copy?或者认为复制是编译器在声明我的方法后添加的东西?

我应该这样做吗?

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

解决方法

规范在这方面没有提及,但这实际上是预期的.复制方法取决于默认参数,重复参数(varargs)不允许使用默认参数:

It is not allowed to de?ne any default
arguments in a parameter section with
a repeated parameter.

(Scala参考,第4.6.2节 – 重复参数)

scala> def f(xs: Int*) = xs
f: (xs: Int*)Int*

scala> def f(xs: Int* = List(1,2,3)) = xs
<console>:24: error: type mismatch;
 found   : List[Int]
 required: Int*
       def f(xs: Int* = List(1,3)) = xs
                            ^
<console>:24: error: a parameter section with a `*'-parameter is not allowed to have default arguments
       def f(xs: Int* = List(1,3)) = xs
           ^

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读