我是 scala 的新手,无法理解 Lift 家伙是如何实现 Record API 的。然而,问题不在于这个 API,而更多的是关于 Scala。我对 Lift 中使用的类模式中的对象如何工作感兴趣。
class MainDoc private() extends MongoRecord[MainDoc] with ObjectIdPk[MainDoc] {
def meta = MainDoc
object name extends StringField(this, 12)
object cnt extends IntField(this)
}
object MainDoc extends MainDoc with MongoMetaRecord[MainDoc]
在上面的代码片段中,您可以看到在 Lift 中如何定义记录。有趣的部分是字段被定义为对象。API 允许您像这样创建实例:
val md1 = MainDoc.createRecord
.name("md1")
.cnt(5)
.save
这可能是通过使用 apply 方法完成的?但与此同时,您可以通过执行以下操作来获取值:
val name = md1.name
这一切如何运作?在类的范围内,对象是否不是静态的。或者它们只是一些内部表示的构造函数类?怎么可能遍历所有字段,你使用反射吗?
谢谢,奥托