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
.
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
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
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