Scala-如何从另一个类访问案例类方法?

时间:2018-08-21 09:34:55

标签: scala

最初,我在对象内部有一个case类。因此,我可以从这样的另一个类extractSales中调用SaleProcessor.extractSales(salesJson)方法。

object SaleProcessor {
 case class Sale(name: String, type: String, description: String) {
 def extractSales(salesJson: JValue): Seq[Sale] = {
    salesJson.extract[Seq[Sale]]
  }}}

然后,我在某处读到不需要在对象内嵌套case类,并决定删除SaleProcessor对象,只剩下case类。但是之后,我无法像以前那样调用该方法。

据我了解,没有对象,我必须实例化case类。但是由于从JSON提取时会创建Sale对象,因此不确定如何实现此目标吗?

另一个问题是,将案例类嵌套到对象中最合适的方法是什么?在Scala中什么是最佳实践?

1 个答案:

答案 0 :(得分:5)

您仍将方法保留在object中,并以相同的方式调用它:

case class Sale(name: String, type: String, description: String)

object SaleProcessor {
  def extractSales(salesJson: JValue): Seq[Sale] = ...
}

// elsewhere
SaleProcessor.extractSales(salesJson)

通常将对象命名为与类相同的名称(即object Sale而不是object SaleProcessor),使其成为伴随对象,但这不是必需的。