Je suis noteur nouveau à scala, mais au fond ont trouvé mon chemin ...comment exposer test pour un match de modèle
Ici, je demande la méthode recommandée/meilleures pratiques/idiomatiques de la mise en œuvre ceci:
- interne, MyClass utilise un état de type, qui est mis en œuvre par une hiérarchie fermée des classes de cas
- mais sur l'API, seule une partie prédicat booléen doit être exposé, qui obtient mis en œuvre par correspondance contre l'état (interne).
Actuellement, ma mise en œuvre est le long des lignes de ...
def isSane: Boolean = state match {
case Ok(_,'valid) => true
case _ => false
}
Mais cette solution me sent maladroit, comme si quelque chose dans l'expression 3 lignes de code qui ne dispose que le contenu de l'information vaut une ligne de code. En fait, ce que je voudrais écrire serait:
def isSane: boolean = state matches Ok(_, 'valid)
Probablement/probable qu'il est possible de mettre en œuvre un opérateur approprié vous dans scala, mais avant que je regarde dans cela, je voudrais savoir quelle serait la d'habitude façon de résoudre ce problème. Peut-être y a-t-il aussi une implémentation de bibliothèque existante?
Dans l'exemple que j'avais en tête, le point est simplement de faire correspondre une propriété dans l'un des états possibles. – Ichthyo
bien ... une autre question intéressante serait en ce qui concerne la performance. – Ichthyo
... Je suppose que le compilateur génère quelque chose de similaire à votre deuxième exemple de la correspondance de modèle d'origine, tandis qu'OTOH, en plaçant l'isSane dans la hiérarchie d'état permettrait d'échanger du stockage supplémentaire pour une amélioration des performances. Mais de toute façon, dans la plupart des cas, de telles différences n'auront aucune importance compte tenu des performances des systèmes actuels. – Ichthyo