Prendre la fonction suivante:
def fMatch(s: String) = {
s match {
case "a" => println("It was a")
case _ => println("It was something else")
}
}
Ce modèle correspond bien:
scala> fMatch("a")
It was a
scala> fMatch("b")
It was something else
Ce que je voudrais être en mesure de faire est la suivante:
def mMatch(s: String) = {
val target: String = "a"
s match {
case target => println("It was" + target)
case _ => println("It was something else")
}
}
Cela donne l'erreur suivante:
fMatch: (s: String)Unit
<console>:12: error: unreachable code
case _ => println("It was something else")
Je suppose que c'est parce qu'il pense que la cible est en fait un nom que vous souhaitez affecter à ce que les données d'entrée. Deux questions:
Pourquoi ce comportement? Ne pouvez pas le cas, il suffit de regarder pour les variables dans la portée qu'ont type approprié et de l'utilisation de ces premier et, si aucun n'est trouvé, puis de traiter la cible sous un nom de patternmatch?
Est-il une solution pour cela? De toute façon le modèle ' match contre les variables? Finalement, on peut utiliser un grand si l'énoncé, mais la casse est plus élégant.