我正在尝试这样做,这样我就可以从一个模型中获取一个值到另一个模型的创建中。这是非常简化的,但是给出了我在扩展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,
^
我已经尝试在Object / singleton中进行某种查找,在def this()内部(这给出了“Application不带参数”错误),以及其他一些东西,但没有任何工作。看起来很简单,但根本没有运气。
答案 0 :(得分:2)
问题是你试图在构造函数中访问类的成员,因为这是在构造对象之前 - 它是不可访问的。在伴侣中完成它应该可以帮助你解决这个问题。类似的东西:
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
1}}。