2 votes

scala - comment accéder à une méthode d'une classe de cas depuis une autre classe ?

Au départ, j'avais une classe de cas à l'intérieur d'un objet. Je pouvais donc appeler extractSales d'une autre classe comme ceci : SaleProcessor.extractSales(salesJson) .

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

Puis j'ai lu quelque part qu'il n'est pas nécessaire d'imbriquer une classe de cas à l'intérieur d'un objet et j'ai décidé de supprimer la classe de cas. SaleProcessor en ne laissant que la classe de l'affaire. Mais après cela, je suis incapable d'appeler la méthode comme avant.

D'après ce que je comprends, sans objet, je dois instancier la classe du cas. Mais je ne sais pas comment faire puisque l'objet Vente est créé au moment de l'extraction du JSON ?

Une autre question est de savoir quelle serait l'approche la plus adéquate pour imbriquer des classes de cas dans des objets et quelle est la meilleure pratique en Scala ?

7voto

Alexey Romanov Points 39124

Vous garderez toujours la méthode à l'intérieur du object et l'appeler de la même façon :

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

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

// elsewhere
SaleProcessor.extractSales(salesJson)

Il serait courant de nommer l'objet de la même manière que la classe (c'est-à-dire object Sale au lieu de object SaleProcessor ), ce qui en fait un objet complémentaire, mais non nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X