[scala] 스칼라에서 앱 특성과 주요 방법 사용의 차이점

차이점은 무엇입니까

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 Appscala MyObject.scala“명령에 의해 실행되지 않았지만 main 메서드가 포함 된 개체 가 ” scala MyObject.scala“명령에 의해 실행되었습니다 . 스크립팅의 주요 방법으로 객체를 찾는 스칼라로 설명되었습니다.

Eclipse의 REPL 또는 scala workseet MyObject.main(Array[String]())를 사용하는 경우 두 경우 모두 명시 적으로 호출해야합니다 .

이 간단한 팁은 저와 같은 초보자에게 도움이됩니다.


답변

앱 트레이 트는 [[DelayedInit]] 기능을 사용하여 구현됩니다. 즉, 기본 메서드가 실행되기 전에 개체의 필드가 초기화되지 않습니다.


답변