代码之家  ›  专栏  ›  技术社区  ›  samba

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

  •  1
  • samba  · 技术社区  · 6 年前

    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类。但不知道如何实现这一点,因为Sale对象是在从JSON提取的时候创建的?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Alexey Romanov    6 年前

    你还是把方法放在 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 ),使其成为伴生对象,但不是必需的。