scala - 如何从另一个类访问case类方法?

sam*_*mba 2 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]]
  }}}
Run Code Online (Sandbox Code Playgroud)

然后我读到某个地方,没有必要在一个对象中嵌套一个case类,并决定删除该SaleProcessor对象而只留下case类.但在那之后,我无法像以前那样调用该方法.

据我所知,没有对象我必须实例化案例类.但是不确定如何实现这一点,因为如果从JSON中提取,那么Sale对象就会被创建?

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

Ale*_*nov 6

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

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

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

// elsewhere
SaleProcessor.extractSales(salesJson)
Run Code Online (Sandbox Code Playgroud)

将对象命名为与类相同(即object Sale代替object SaleProcessor)是常见的,使其成为伴随对象,但不是必需的.