Arasındaki fark nedir
object Application extends App {
println("Hello World")
}
ve
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Arasındaki fark nedir
object Application extends App {
println("Hello World")
}
ve
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Yanıtlar:
Uygulama özelliği, çalıştırılabilir bir ölçekleme programı oluşturmanın uygun bir yoludur. Altenatif ana yöntemin farkı (bariz sözdizimsel farklılıklardan ayrı olarak), Uygulama özelliğinin gecikmeli başlatma özelliğini kullanmasıdır.
2.9 sürüm notlarından (bkz. Http://www.scala-lang.org/old/node/9483 )
Uygulama özelliğini devralan nesneler bunun yerine Scala 2.9'un gecikmeli başlatma özelliğini kullanarak tüm gövdeyi miras alınan ana yöntemin bir parçası olarak yürütür.
Uygulama şemasının bir başka yeni özelliği de komut satırı argümanlarına artık args değeri (trait App'ten miras alınan) aracılığıyla erişilebilir olmasıdır.
main
yöntem olduğu ve gövdenin beklendiği gibi çalıştırılmadığı konusunda haklı mıyım? Main'e girdikten sonra bir noktada yürütüldü mü?
main
yöntem App
var Application
. Gecikmeli başlatmanın Application
nesnenizin gövdesini yürüten şey olduğu gerçeğinin ötesinde hiçbir sihir yoktur .
Bu iki durum, scala komut dosyasında aynı değildir.
object extends App
" scala MyObject.scala
" komutuyla çalıştırılmadı , ancak ana yöntemi içeren nesne " scala MyObject.scala
" komutuyla çalıştırıldı . Bu, komut dosyası oluşturmak için ana yöntemle nesne arayan skala olarak tanımlandı.
REPL veya Eclipse'in ölçekleme çalışma setini kullanırken, MyObject.main(Array[String]())
her iki durum için de açıkça çağırmanız gerekir .
Bu basit ipucu benim gibi yeni başlayanlar için faydalı olacaktır.