Scala - dynamický jazyk
Scala je velice flexibilní jazyk (to už víme) a dá se v něm udělat téměř nemožné. A hranice nemožného se pořád posouvají.
Takže pokud vám z nějakého důvodu (neodvážím se domýšlet proč)
v jazyce chybí vyhodnocování pravdivosti známé z dynamických jazyků
jako třeba PHP, Python nebo Perl, kdy se jako true vyhodnotí
všechna nenulová čísla, neprázdné řetězce a kolekce, stačí čtyři
řádky kódu a Scala se bude chovat přesně takhle.
Je to děsivý hack a nikomu ho nedoporučuji použít, protože jím velice oslabíte statickou typovou kontrolu a věci se mohou začít chovat velice divně. Implicitní konverze se totiž nebudou používat jenom v podmínkách nebo ve while cyklu, ale všude, kde nebudou sedět typy, což může vést ke katastrofě biblických rozměrů.
Takže ještě jednou: bůh s tím, kdo tohle použije, ale jako demonstrace možností Scaly je to docela pěkné, ne?
implicit def longToBool(l: Long) = l != 0.toLong
implicit def doubleToBool(d: Double) = d != 0.0
implicit def traversableToBool[T <% scala.collection.Traversable[_]](t: T) = t != null && t.nonEmpty
implicit def optionToBool(o: Option[_]) = (o != null) && (o match { case _: Some[_] => true; case None => false })
// test
if (1) println("true") else println("false") // true
if (0) println("true") else println("false") // false
if (1.0) println("true") else println("false") // true
if (0.0) println("true") else println("false") // false
if (1.toLong) println("true") else println("false") // true
if (0.toLong) println("true") else println("false") // false
if ("asdf") println("true") else println("false") // true
if ("") println("true") else println("false") // false
if (List(1, 2, 3)) println("true") else println("false") // true
if (List()) println("true") else println("false") // false
if (Nil) println("true") else println("false") // false
if (Array("asdf")) println("true") else println("false") // true
if (Array[String]()) println("true") else println("false") // false
if (Some(1)) println("true") else println("false") // true
if (None) println("true") else println("false") // false
if (null) println("true") else println("false") // false




Jmenuji se Karel Čížex, v síti také známý jako 
komentáře