J'ai vu certains des autres problèmes impliquant le fameux problème "22 champs/paramètres" qui est un bug inhérent (fonctionnalité?) De Scala V < 2.11. Voir here et here. Cependant, selon ce blog post, il semble que la limite de 22 paramètres dans case class
a été fixée; au moins où la langue est concernée.Utilisation de Play Framework et de la classe de cas avec plus de 22 paramètres
J'ai un case class
que je veux charger un nombre arbitraire (Lire:> 22) de valeurs dans lequel sera plus tard lu dans un objet JSON en utilisant la bibliothèque de lecture.
Il ressemble à ceci:
object L {
import play.api.libs.json.Reads. _
import play.api.libs.functional.syntax._
implicit val responseRead: Reads[L] = (
MyField1.jsPath.Read[MyField1.t] and
MyField2.jsPath.Read[MyField2.t] and
...
MyField35.jsPath.Read[MyField35.t]
) (L.apply _)
}
case class L(myField1: MyField1.t, myField2: MyField2.t, ... myField35: MyField35.t)
Le problème est que sur la compilation, Scala se plaint qu'il ya plus de 22 paramètres dans le case class
. (Spécifiquement: sur la dernière ligne de la définition de l'objet, quand le compilateur tente de construire, j'obtiens: "l'implémentation limite les fonctions à 22 paramètres".) J'utilise actuellement Scala v2.11.6, donc pense que ce n'est pas un problème de langue. Cela me fait penser que la bibliothèque Play n'a pas mis à jour leur implémentation de Read
.
Si c'est le cas, alors je suppose que le meilleur pari est de grouper des champs liés dans Tuples et de passer les Tuples à travers l'API JSON?