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

标签 scala

最初我在一个对象中有一个案例类。所以我可以像这样从另一个类调用 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]]
  }}}

然后我在某处读到没有必要在对象中嵌套案例类,因此决定删除 SaleProcessor 对象,只留下案例类。但在那之后我无法像以前那样调用该方法。

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

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

最佳答案

您仍将方法保留在 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),使其成为伴随对象,但不是必需的。

关于scala - 如何从另一个类访问案例类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945726/

相关文章:

multithreading - Scala并行集合: Idiomatic way of having thread-local-variables for worker threads

scala - 类型上限允许子类型但不允许父类型

scala - 有没有办法隐式类可以覆盖默认实现

java - 带有按 LIFO 顺序提供的等待列表的信号量或锁

scala - Haskell 中类型类的目的与 Scala 中特征的目的

scala - Scala 类型系统的优点

Scala:为什么一个方法不能有多个可变参数?

scala - 如何在 Actor 中停止 Source.tick?

eclipse - 如何用scala编写eclipse rcp应用程序?

Scala:返回 bool 值的模式匹配的缩写形式