Attenti ad Hello World!

Nelle prime peregrinazioni con il linguaggio Scala, il programma che non si può non scrivere è "Hello world". Attenzione però ad una sorpresa. Il seguente frammento di codice può sembrare innocuo, ma nasconde un'insidia:

 
object Hello extends Application {
  println "Hello world!"
}
 

Il programma, contrariamente alle aspettative, non stampa nulla. Il metodo println viene infatti mappato sul metodo con zero parametri dell'oggetto Predef, importato automaticamente in qualsiasi programma Scala. Il programma comunque non dovrebbe compilare, come per esempio avviene per il seguente:

 
object buggyClient extends Application {
  def say(sentence: String) = println(sentence)
  def say() = println("I'm a buggy object :-(")
 
  say "Hello Wordld"
}
 

Per fortuna è stato aperto un bug a riguardo.

Lascia un commento