Scala 连接案例类和模型中的对象
我已经开始学习Play,在我看到的教程中,模型通常有两个组件:一个Scala 连接案例类和模型中的对象,scala,playframework,Scala,Playframework,我已经开始学习Play,在我看到的教程中,模型通常有两个组件:一个案例类和一个对象 我已经用一个对象和一个case类创建了一个模型。我的问题是如何从对象引用字段(在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 {
案例类
和一个对象
我已经用一个对象和一个case类创建了一个模型。我的问题是如何从对象引用字段(在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
,但我得到无法解析符号url
如何引用该字段?您不能。对象中的任何字段都可以从相应的类定义中访问,但不能从相反的类定义中访问。以一种过于简单的方式,您可以将对象看作类的静态部分(在java中,您可能会使用
static
)。有关更多详细信息,您可以查看此项。您不能。对象中的任何字段都可以从相应的类定义中访问,但不能从相反的类定义中访问。以一种过于简单的方式,您可以将对象看作类的静态部分(在java中,您可能会使用static
)。有关更多详细信息,请参见此项。要引用案例类实例的字段,需要引用实例本身。查看您的代码,您可以通过两种方式实现这一点:
向readPageContent
方法添加参数:
def readPageContent(page: Page): String = {
new URL(page.url).getContent().toString
}
case class Page(url: String) {
def readPageContent(page: Page): String = {
new URL(this.url).getContent().toString
}
}
将readPageContent
方法移动到Page
类本身:
def readPageContent(page: Page): String = {
new URL(page.url).getContent().toString
}
case class Page(url: String) {
def readPageContent(page: Page): String = {
new URL(this.url).getContent().toString
}
}
为了引用案例类实例的字段,需要引用实例本身。查看您的代码,您可以通过两种方式实现这一点: 向
readPageContent
方法添加参数:
def readPageContent(page: Page): String = {
new URL(page.url).getContent().toString
}
case class Page(url: String) {
def readPageContent(page: Page): String = {
new URL(this.url).getContent().toString
}
}
将readPageContent
方法移动到Page
类本身:
def readPageContent(page: Page): String = {
new URL(page.url).getContent().toString
}
case class Page(url: String) {
def readPageContent(page: Page): String = {
new URL(this.url).getContent().toString
}
}
您无法从对象访问
this.url
,因为该对象没有名为url
的字段。如果您试图从类的实例访问url
,那么对象如何知道您要从类的哪个实例访问url
?这相当于Java问题,您无法从静态方法访问实例成员。看起来您对Scala类和对象有误解。您无法从该对象访问this.url
,因为该对象没有名为url
的字段。如果您试图从类的实例访问url
,那么对象如何知道您要从类的哪个实例访问url
?这相当于Java问题,您无法从静态方法访问实例成员。看起来您对Scala类和对象有误解。