156 votes

En utilisant les opérateurs de comparaison en Scala ' s modèle système de rapprochement

Il est possible de faire correspondre une comparaison utilise le modèle de système en Scala de correspondance ? Par exemple :

La deuxième instruction case est illégale, mais je voudrais être en mesure de préciser « lorsqu’un est supérieur à ».

299voto

Ben James Points 41165

Vous pouvez ajouter un gardien, c'est-à-dire une `` et une expression booléenne après le modèle :

Edit : Notez que c’est plus que superficiellement différent pour mettre un *après* la , parce qu’un patron ne correspondra pas si la garde n’est pas vraie.

32voto

seh Points 8533

Comme une non-réponse à la question de l'esprit, qui lui a demandé comment intégrer des prédicats dans un match de la clause, dans ce cas, le prédicat peut être pris en compte avant l' match:

def assess(n: Int) {
  println(
    n compare 10 match {
      case 0 => "ten"
      case 1 => "greater than ten"
      case -1 => "less than ten"
    })
}

Maintenant, la documentation RichInt.compare(Int) promet seulement que la non-égalité des résultats sera supérieur ou inférieur à zéro. Java Comparable#compareTo(T) est spécifié de la même façon à la Scala. Il arrive à être conventionnelle, à utiliser 1 et -1 pour les valeurs positives et négatives, respectivement, comme Scala, à la mise en œuvre actuelle , mais on ne peut pas faire une telle hypothèse sans risque, et de la mise en œuvre du changement par en dessous.

-1voto

franza Points 782

Utilisez des gardes :

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