Jak oddać zmienną w Scali?

Biorąc pod uwagę zmienną o typie Graphics, jak wrzucić ją do Graphics2D w Scali?

 192
Author: Peter Mortensen, 2009-05-31

2 answers

Preferowaną techniką jest dopasowanie wzorca. Pozwala to z gracją obsłużyć przypadek, że dana wartość jest , a nie danego typu:

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

Ten blok replikuje semantykę metody asInstanceOf[Graphics2D], ale z większą elastycznością. Na przykład, można zapewnić różne gałęzie dla różnych typów, skutecznie wykonując wiele rzutów warunkowych w tym samym czasie. Wreszcie, nie musisz naprawdę rzucać wyjątku w obszarze catch-all, możesz również zwrócić null (lub najlepiej None), lub wprowadzić jakąś gałąź awaryjną, która działa bez Graphics2D.

Krótko mówiąc, to jest naprawdę droga do zrobienia. Jest nieco bardziej składni niż asInstanceOf, ale dodatkowa elastyczność jest prawie zawsze tego warta.
 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/doraprojects.net/template/agent.layouts/content.php on line 54
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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-31 06:26:51