Considérez ce qui suit:Comment puis-je utiliser les fonctions partielles pour composer mes instructions de correspondance?
scala> object Currency extends Enumeration {
| type Currency = Value
| val USD = Value
| val GBP = Value
| val EUR = Value
| val TRY = Value // Turkish lira
| val NGN = Value // Nigerian naira
| }
defined module Currency
scala> import Currency._
import Currency._
scala> val pf: (String) => Option[Currency] = {
| case "$" => Some(USD)
| case "€" => Some(EUR)
| case "£" => Some(GBP)
| case "₦" => Some(NGN)
| case _ => None
| }
pf: (String) => Option[Currency.Currency] = <function1>
Je pensais que je serais capable de faire alors ceci:
scala> "$" match pf
<console>:1: error: '{' expected but identifier found.
"$" match pf
^
Mais non. Est-ce que je manque quelque chose de basique ici? Mon espoir était que mon PartialFunction pourrait être utilisé et réutilisé dans les déclarations de match. Est-ce que ce n'est pas possible?
Votre 'pf' n'est pas une fonction partielle, c'est une fonction partielle levée (c'est-à-dire une fonction normale). Ce n'est pas pourquoi cela ne fonctionne pas, mais dans d'autres contextes cela peut faire la différence. –
@Rex Ok, merci. Mais si ce n'est pas la raison pour laquelle ça ne fonctionne pas, savez-vous quelle est la raison? – pr1001