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)
main
metoda, a treść nie jest wykonywana zgodnie z oczekiwaniami. Czy jest w ogóle wykonywany w pewnym momencie po wejściu do main?
main
metodę . Nie ma żadnej magii poza faktem, że opóźniona inicjalizacja jest tym, co wykonuje ciało twojego obiektu. App
Application
Application
Te dwa przypadki nie są takie same w skryptach Scala.
object extends App
nie został wykonany scala MyObject.scala
poleceniem " ", ale obiekt zawierający metodę główną został wykonany scala MyObject.scala
poleceniem " ". 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.