【问题标题】:Why Scala IDE cannot compile a method even though proposing it?为什么Scala IDE即使提出方法也无法编译它?
【发布时间】:2013-11-26 23:42:32
【问题描述】:

我在 Scala IDE 中反复遇到类似的问题。感谢制表符补全,Scala IDE 提出了几种方法。但是,当我选择一种方法时,它总是抱怨它无法解决它。在屏幕截图中,我从models.Product 中选择了方法findByEan。选择建议的方法后,我收到一条错误消息:

Multiple markers at this line
    - Line breakpoint:Products [line: 16] - show
    - value findByEan is not a member of object models.Product

它抱怨.findByEan() 不是models.Product 的一部分。正如您从上面的清单中看到的 - Product 对象具有此方法。当然,它甚至在几秒钟前就向我提出了这个建议!

package models

case class Product(ean:Long, name:String, description:String)


object Product{

   var products = Set() // some products ...

   def find_all = products.toList.sortBy(_.ean)
   def findByEan(ean:Long) = products.find(_.ean == ean)

当我将模板视图添加到控制器时会发生类似的问题。

  • 为什么 Scala IDE 无法编译建议的方法?

Scala IDE 版本:3.0.2-vfinal-20131028-1923-Typesafe

【问题讨论】:

  • 我无法用你的源代码重现它(我必须将 package models 移动到 Product.scala 文件的顶部,否则该文件中会出现错误)。还有什么我可以尝试的吗?
  • 抱歉 - 当我将代码复制到 stackoverflow 时发生了这种情况。
  • 我现在重启了 Scala IDE 几次。上面的错误消失了,但是现在在Ok(views.html.products.details(product))中找不到details

标签: scala playframework-2.0 scala-ide


【解决方案1】:

关于找不到details。从它的完全限定名称来看,它似乎是一个 Play 模板。

Play 模板由 Play 自己编译,它们仅在模板编辑器内进行类型检查。为了使它们完整地列出,它们必须被编译(通过在 Web 浏览器中刷新应用程序来完成),并且在 Scala IDE 中可见(通过在 IDE 中刷新项目来完成)。

也可以以编译+刷新自动完成的方式设置环境。 this tutorial 中描述了这些步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多