在案例中将案例类与对象连接起来

时间:2016-03-07 13:49:35

标签: scala playframework

我已经开始学习Play了,在我看到的教程中,模型通常有两个组件:case classobject

我创建了一个包含对象和案例类的模型。我的问题是如何从对象引用一个字段(在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
  }
}

例如,在对象中,我尝试使用url引用字段this.url,但我得到cannot resolve symbol url

我如何参考该字段?

2 个答案:

答案 0 :(得分:3)

为了引用案例类实例的字段,您需要引用实例本身。查看代码,您可以通过两种方式实现此目的:

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
  }
}

答案 1 :(得分:2)

你不能。可以从相应的类定义访问对象中的任何字段,但不能相反。以过于简化的方式,您可以将对象视为类的静态部分(在java中您将使用static)。有关详细信息,请查看此SO question