【问题标题】:Compile errors when trying to pop element from list尝试从列表中弹出元素时编译错误
【发布时间】:2012-11-28 18:29:19
【问题描述】:

我遇到了一些我似乎无法理解的奇怪编译器错误。下面是相关代码:

class A {

  var x = List[B]()

  def func = {
    val temp = x(0)
    x = x tail
    temp
  }

}

我只是想从列表中删除第一个元素并返回它。但是,我收到一条错误消息,提示“类型不匹配:找到 B:必需的 Int”。我终其一生都无法弄清楚它为什么需要 Int。

提前感谢您的帮助!

【问题讨论】:

    标签: list scala


    【解决方案1】:

    B 的类型是什么?你是说Int吗?

    要获取第一个元素,您可以使用head。要获取列表的其余部分,您可以使用 tail。 Scala 中的点运算符是可选的。

      def func = {  
        val temp = x.head
        x = x.tail
        temp
      }
    

    【讨论】:

    • 是的,所以由于某种原因,当我执行 x head 时,我得到“值更新不是 B 的成员”。不,我想返回类型 B(自定义案例类),但出于某种原因它需要 Int。
    • 没关系,我不知道我需要 .对于 x.head。现在我对类型检查器有同样的错误..
    • x.headx headx(0) 都返回列表的第一个元素 xx headx.head 的语法糖。
    • 引入了不带点的语法来支持像myList contains "foo"这样的infix应用程序,并且非常适用。如果有疑问,只需写下点。
    • 不要使用后缀方法语法。编译器认为你的意思是x = x tail temp。尾部后的分号也可以,但最好使用点。 mobile.twitter.com/odersky/status/49882758968905728
    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2013-03-04
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多