【问题标题】:"not found: value account" While using squeryl and Scala“未找到:价值帐户”使用 squeryl 和 Scala 时
【发布时间】:2017-04-19 09:04:40
【问题描述】:

我正在努力做到这一点,以便我可以从一个模型中获得价值并创建另一个模型。这非常简化,但给出了我在扩展 squeryl 模型的模型实例时遇到的错误。实际上,我正在针对这个模型进行一些计算,但需要另一个模型的值。

我在执行各种版本时都遇到错误:

class Bar(
  val bazId: String
  val someValue: String
) extends db.BaseModel {
  val foo: Foo = db.MyDb.foos.lookup(bazId).head

  def this(
    bazId: Baz
  ) = {
    this (
      Baz.id,
      foo.someValue,
    )
  }

错误是:

not found: value foo
[error]       foo.someValue,
              ^

我尝试在对象/单例中进行某种查找,在 def this() 内部(给出“应用程序不接受参数”错误)和其他东西,但没有任何效果。看起来很简单,但一点运气都没有。

【问题讨论】:

    标签: scala squeryl


    【解决方案1】:

    问题是您试图在构造函数中访问类的成员,因为这是在构造对象之前 - 它不可访问。在同伴中这样做应该可以帮助您解决这个问题。比如:

    object Bar {
      val foo(bazId:String): Foo = db.MyDb.foos.lookup(bazId).head
    }
    
    class Bar(
      val bazId: String,
      val someValue: String
    ) extends db.BaseModel {
      val foo: Foo = Bar.foo(bazId)
    
      def this(
        bazId: String
      ) = {
        this (
          bazId,
          Bar.foo(bazId).someValue
        )
      }
    }
    

    或者,如果您确实打算让构造函数接受类Baz,那么您也可以直接在Baz 中添加查找方法 - 然后您可以直接调用它来查找Foo

    【讨论】:

    • 我想就是这样!我尝试了该对象,但由于某种原因,我认为您使用 this 所以this.foo(bazId) 访问了它。与 Bar.foo(bazId) 交换,它可以工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多