Sự khác biệt giữa
object Application extends App {
println("Hello World")
}
và
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Sự khác biệt giữa
object Application extends App {
println("Hello World")
}
và
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Câu trả lời:
Đặc điểm ứng dụng là một cách thuận tiện để tạo một chương trình scala có thể thực thi được. Sự khác biệt đối với phương thức thay đổi chính là (ngoài sự khác biệt rõ ràng về cú pháp) là đặc điểm Ứng dụng sử dụng tính năng sinh sản chậm.
Từ ghi chú phát hành cho 2.9 (xem http://www.scala-lang.org/old/node/9483 )
Các đối tượng kế thừa đặc điểm Ứng dụng thay vào đó sử dụng tính năng khởi tạo chậm trễ của Scala 2.9 để thực thi toàn bộ phần nội dung như một phần của phương thức chính được kế thừa.
Một tính năng mới khác của lược đồ Ứng dụng là các đối số dòng lệnh hiện có thể truy cập được thông qua giá trị args (được kế thừa từ Ứng dụng đặc điểm)
main
phương thức và phần thân không được thực thi như mong đợi. Nó có được thực thi tại một số thời điểm sau khi vào main không?
main
phương pháp mà App
phù thủy đặc điểm trộn lẫn vào Application
đối tượng của bạn . Không có điều kỳ diệu nào xảy ra ngoài thực tế là quá trình khởi tạo bị trì hoãn là thứ thực thi phần thân của Application
đối tượng của bạn .
Hai trường hợp này không giống nhau trên tập lệnh scala.
object extends App
không được thực thi bởi scala MyObject.scala
lệnh "", nhưng đối tượng chứa phương thức chính được thực thi bởi scala MyObject.scala
lệnh "". Nó được mô tả là scala tìm kiếm đối tượng với phương thức chính để tạo kịch bản.
Khi sử dụng REPL hoặc tập quy mô của Eclipse, cần phải gọi MyObject.main(Array[String]())
rõ ràng cho cả hai trường hợp.
Mẹo đơn giản này hữu ích cho người mới bắt đầu như tôi.