¿Cómo puedo emitir una variable en Scala?


Dada una variable con el tipo Graphics, ¿cómo la echo a Graphics2D en Scala?

 192
Author: Peter Mortensen, 2009-05-31

2 answers

La técnica preferida es usar la coincidencia de patrones. Esto le permite manejar con gracia el caso de que el valor en cuestión es no del tipo dado:

g match {
  case g2: Graphics2D => g2
  case _ => throw new ClassCastException
}

Este bloque replica la semántica del método asInstanceOf[Graphics2D], pero con mayor flexibilidad. Por ejemplo, puede proporcionar diferentes ramas para varios tipos, realizando de manera efectiva varios casts condicionales al mismo tiempo. Finalmente, no necesitas realmente lanzar una excepción en el área general, también puede devolver null (o preferiblemente, None), o puede introducir alguna rama de reserva que funcione sin Graphics2D.

En resumen, este es realmente el camino a seguir. Es un poco más voluminoso sintácticamente que asInstanceOf, pero la flexibilidad añadida casi siempre vale la pena.

 278
Author: Daniel Spiewak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-31 15:21:16
g.asInstanceOf[Graphics2D];
 217
Author: Eugene Yokota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-31 06:26:51