Étant donné une variable avec le type , comment monter à
dans la Scala ?
Réponses
Trop de publicités?La technique préférée consiste à utiliser le pattern matching. Cela vous permet de traiter le cas où la valeur en question n'est pas d'un type donné:
g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}
Ce bloc réplique de la sémantique de l' asInstanceOf[Graphics2D]
méthode, mais avec plus de souplesse. Par exemple, vous pouvez fournir des différentes branches de différents types, de manière efficace l'exécution de plusieurs conditionnelle jette en même temps. Enfin, vous n'avez pas vraiment besoin de lancer une exception dans le fourre-tout de la zone, vous pouvez également revenir null
(ou, de préférence, None
), ou vous pouvez entrer certains de secours de la branche qui fonctionne sans Graphics2D
.
En bref, c'est vraiment la voie à suivre. C'est un peu plus du point de vue syntaxique volumineux que asInstanceOf
, mais la flexibilité est presque toujours la peine.