Jaka jest różnica pomiędzy
object Application extends App {
println("Hello World")
}
i
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Jaka jest różnica pomiędzy
object Application extends App {
println("Hello World")
}
i
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Odpowiedzi:
Cecha aplikacji to wygodny sposób tworzenia wykonywalnego programu w formacie Scala. Różnica w stosunku do głównej metody alternatywnej polega na tym (poza oczywistymi różnicami składniowymi), że cecha aplikacji korzysta z funkcji opóźnionej inicjalizacji.
Z informacji o wydaniu 2.9 (zobacz http://www.scala-lang.org/old/node/9483 )
Obiekty dziedziczące cechę App zamiast tego wykorzystują funkcję opóźnionej inicjalizacji Scala 2.9, aby wykonać całe ciało jako część dziedziczonej metody głównej.
Kolejną nową funkcją schematu aplikacji jest to, że argumenty wiersza poleceń są teraz dostępne za pośrednictwem wartości args (która jest dziedziczona z cechy App)
mainmetoda, a treść nie jest wykonywana zgodnie z oczekiwaniami. Czy jest w ogóle wykonywany w pewnym momencie po wejściu do main?
mainmetodę . Nie ma żadnej magii poza faktem, że opóźniona inicjalizacja jest tym, co wykonuje ciało twojego obiektu. AppApplicationApplication
Te dwa przypadki nie są takie same w skryptach Scala.
object extends Appnie został wykonany scala MyObject.scalapoleceniem " ", ale obiekt zawierający metodę główną został wykonany scala MyObject.scalapoleceniem " ". Który został opisany jako scala szukający obiektu z główną metodą do skryptowania.
Podczas korzystania z REPL lub zestawu zadań Scala Eclipse należy wywołać MyObject.main(Array[String]())jawnie w obu przypadkach.
Ta prosta wskazówka może być pomocna dla początkujących, takich jak ja.