Lors de la création d'une carte de chaînes à des fonctions partielles, j'ai rencontré un comportement inattendu. Lorsque je crée une fonction partielle en tant qu'élément cartographique, cela fonctionne correctement. Quand je l'alloue à un val, il l'invoque à la place. Essayer d'appeler la vérification génère une erreur. Est-ce prévu? Est-ce que je fais quelque chose de stupide? Commentez le check()
pour voir l'invocation. J'utilise scala 2.7.7Quand une fonction partielle scala n'est pas une fonction partielle?
def PartialFunctionProblem() = {
def dream()() = {
println("~Dream~");
new Exception().printStackTrace()
}
val map = scala.collection.mutable.HashMap[String,()=>Unit]()
map("dream") = dream() // partial function
map("dream")() // invokes as expected
val check = dream() // unexpected invocation
check() // error: check of type Unit does not take parameters
}
Merci pour l'aide. Quand j'ai remplacé mes rêves() par des rêves() _ il s'est comporté comme je m'y attendais. Je vais sortir et lire plus sur les fonctions partielles afin que je ne mésusage pas le terme à nouveau. –