我已经开始学习Play,在我看到的教程中,该模型通常有两个组件:case class
和object
。
我创建了一个带有对象和案例类的模型。我的问题是我如何从对象中引用字段(在 case 类中声明):
package models
import java.net.URL
import play.api.Logger
import play.api.db.DB
import play.api.libs.json.Json
case class Page(url: String)
object Page {
implicit val personFormat = Json.format[Page]
def readPageContent(): String = {
var content: String = new URL(this.url).getContent().toString
return content
}
}
例如,在对象中,我尝试使用 this.url
引用字段url
,但我得到cannot resolve symbol url
.
如何引用该字段?
为了引用案例类实例的字段,您需要引用实例本身。查看您的代码,您可以通过两种方式实现此目的:
向readPageContent
方法添加参数:
def readPageContent(page: Page): String = {
new URL(page.url).getContent().toString
}
将 readPageContent
方法移动到 Page
类本身:
case class Page(url: String) {
def readPageContent(page: Page): String = {
new URL(this.url).getContent().toString
}
}
你不能。对象中的任何字段都可以从相应的类定义中访问,但不能相反。以一种过于简化的方式,您可以将对象视为类的静态部分(在 java 中您会使用 static
)。有关更多详细信息,您可以查看此SO问题。