복붙노트

[SCALA] 스칼라 스크립트와 응용 프로그램 사이의 차이

SCALA

스칼라 스크립트와 응용 프로그램 사이의 차이

스칼라 스크립트와 스칼라 응용 프로그램의 차이점은 무엇입니까? 예를 제공하십시오

내가 읽고있다 책은 스크립트가 항상 정의의 응용 프로그램이 종료 반면 결과의 표현에 종료해야한다는 것을 말한다. 불행하게도 명확한 예는 표시되지 않습니다.

도움을 나를 위해이 명확히하십시오

해결법

  1. ==============================

    1.나는 컴파일 된 파일의 엔트리 포인트가 사전에 있기 때문에, 당신은 최고 수준의 표현을 (사용할 수없는 것을 저자 수단 것은 일반 스칼라 파일이 / 유용 할 클래스 또는 작동하려면 객체를 정의 할 필요가 있다고 생각 -한정된). 예를 들면 :

    나는 컴파일 된 파일의 엔트리 포인트가 사전에 있기 때문에, 당신은 최고 수준의 표현을 (사용할 수없는 것을 저자 수단 것은 일반 스칼라 파일이 / 유용 할 클래스 또는 작동하려면 객체를 정의 할 필요가 있다고 생각 -한정된). 예를 들면 :

    println("foo")
    
    object Bar {
        // Some code
    }
    

    유일한 논리적 해석은 정말 이해가되지 않습니다 컴파일 시간에 그것을 실행하는 것 때문에 println 메소드 문은 .scala 파일의 최상위에 유효하지 않습니다.

    그는 스크립트가 다시 의미가있는 실행할 때 실행되기 때문에 달리 스칼라 스크립트는 최상위에 표현식을 포함 할 수 있습니다. 스칼라 스크립트 파일은 다른 한편으로는 정의가 포함되어있는 경우 스크립트가 정의를 어떻게 해야할지 때문에, 그것은뿐만 아니라 쓸모가있을 것입니다. 당신이 어떤 방법으로 정의를 사용하려는 경우 그러나, 그것은 예컨대, 괜찮 다시 것 :

    object Foo {
        def bar = "test"
    }
    
    println(Foo.bar)
    

    마지막 문이 이전의 정의를 사용하여 표현하지만 정의 자체이기 때문에 후자는, 스칼라 스크립트로 유효합니다.

  2. ==============================

    2.스크립트의 특징 :

    스크립트의 특징 :

    스칼라 스크립트는 하나의 파일에 구현 될 수있는 작은 작업에 도움이 될 경향이있다.

    프로젝트는 더 복잡한 성장하기 시작하면 다른 한편으로는 스칼라 애플리케이션은 훨씬 더 적합하다. 그들은 선명도를 유지하는 것이 중요하다 다른 파일 및 네임 스페이스로 작업을 분할 할 수 있습니다.

    경우 다음과 같은 스크립트를 작성 :

    #!/usr/bin/env scala
    
    println("foo")
    

    스칼라 2.11.1 컴파일러는 당신이 쓴 (GitHub의에 소스) 척합니다 :

    object Main {
      def main(args: Array[String]): Unit =
        new AnyRef {
          println("foo")
        }
    }
    
  3. ==============================

    3.글쎄, 난 항상이는 스칼라 스크립트입니다 생각 :

    글쎄, 난 항상이는 스칼라 스크립트입니다 생각 :

    $ cat script
    
    #!/usr/bin/scala
    !#
    
    println("Hello, World!")
    

    간단한 실행 :

    $ ./script
    

    반면에 응용 프로그램은을 .class로 컴파일 및 자바 런타임을 사용하여 명시 적으로 실행해야합니다.

  4. from https://stackoverflow.com/questions/13674327/the-difference-between-scala-script-and-application by cc-by-sa and MIT license