차이점은 무엇입니까
object Application extends App {
println("Hello World")
}
과
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
답변
앱 특성은 실행 가능한 스칼라 프로그램을 만드는 편리한 방법입니다. 주요 방법 대체 방법과의 차이점은 앱 특성이 지연된 초기화 기능을 사용한다는 것입니다 (명백한 구문 차이는 제외).
2.9 릴리스 노트에서 ( http://www.scala-lang.org/old/node/9483 참조 )
App 특성을 상속하는 개체는 대신 Scala 2.9의 지연된 초기화 기능을 사용하여 상속 된 기본 메서드의 일부로 전체 본문을 실행합니다.
앱 체계의 또 다른 새로운 기능은 이제 args 값 (특성 앱에서 상 속됨)을 통해 명령 줄 인수에 액세스 할 수 있다는 것입니다.
답변
이 두 경우는 스칼라 스크립팅에서 동일하지 않습니다.
object extends App
” scala MyObject.scala
“명령에 의해 실행되지 않았지만 main 메서드가 포함 된 개체 가 ” scala MyObject.scala
“명령에 의해 실행되었습니다 . 스크립팅의 주요 방법으로 객체를 찾는 스칼라로 설명되었습니다.
Eclipse의 REPL 또는 scala workseet MyObject.main(Array[String]())
를 사용하는 경우 두 경우 모두 명시 적으로 호출해야합니다 .
이 간단한 팁은 저와 같은 초보자에게 도움이됩니다.
답변
앱 트레이 트는 [[DelayedInit]] 기능을 사용하여 구현됩니다. 즉, 기본 메서드가 실행되기 전에 개체의 필드가 초기화되지 않습니다.