2010-09-10 25 views
4

Je voudrais tester les arguments de mon constructeur de classe de cas et lancer une exception s'ils échouent à certains tests. Le compilateur se plaint quand j'ai essayé d'écrire mon propre appliquer la méthode (Multiple « appliquer » méthodes.Comment tester les arguments d'un constructeur de classe case?

Je suppose que je pourrais en faire une classe non-cas, et faire l'appliquer/unapply choses sur le terrain du constructeur moi-même, mais je l'avais espéré pas.

Merci

Répondre

15
case class Picky(i: Int, s: String) { 
    require(i % 2 == 0, "i must be even") 
    require(s.length < 50, "s length must be less than 50 characters") 

    // ... 
} 
+0

Exactement ce que je cherchais – Jim

+0

Si vous finissez par se éloigner de vouloir code client d'avoir à traiter avec des exceptions (mauvaise odeur de code FP) et que vous voulez une solution préventive plus en ligne avec les solutions FP comme Option, Try ou Sither, je viens de poster quelque chose à ce sujet sur le site de StackOverflow, CodeReview. Si vous avez le temps de le regarder, j'apprécierais tout commentaire que vous pourriez avoir à ce sujet; c'est-à-dire aider à réduire la plaque passante, de meilleures méthodes pour aborder l'espace problème, etc.: http://codereview.stackexchange.com/questions/60645/reducing-boilerplate-when-validating-parameters-and-using-a-tuple-for- le-parame – chaotic3quilibrium