Quelqu'un peut-il réécrire ce code pour faire la même chose, mais sans aucun avertissement du compilateur s'il vous plaît: -Comment puis-je correspondre à une signature de fonction sans obtenir les avertissements du compilateur d'effacement de type à Scala
object TestTypeErasure {
def main(args:Array[String]) {
def myFunction(myObject:Any):Boolean = {
true
}
val myVariable: (Any => Boolean) = myFunction
myVariable match {
case function:(Any => Boolean) => println("Match")
}
}
}
Mille thankyous
Keith
Mettre à jour !!!!. Désolé de faire un vrai hachage de ça. Sa première question sur le SO
Juste pour les gourous savent que je l'ai essayé quelque chose le long des lignes de cela aussi en vain: - (ne peut pas compiler)
object TestTypeErasure {
def doTest(parameter: Any) = {
parameter match {
case function:Function1[_, _] => function("Whatever")
}
}
def main(args:Array[String]) {
}
}
J'obtiens l'erreur: -
TestTypeErasure.scala:6: error: type mismatch;
found : java.lang.String("Whatever")
required: _
case function:Function1[_, _] => function("Whatever")
^
one error found
Merci encore
Keith
Salut J'avais pris un coup d'oeil. J'ai essayé la meilleure réponse. La prochaine difficulté est que je veux appeler la fonction. Si je change le code pour appeler réellement la fonction comme ci-dessous, j'obtiens une erreur de compilation.Est-ce que quelqu'un sait comment je peux contourner ce objet TestTypeErasure { def DoTest (paramètre: Any) = { match paramètre { cas de fonction: Fonction1 [_, _] => fonction ("Whatever") } } def principaux (args: Array [String]) {} } Merci encore Keith – Keith