Scala 로 응용프로그램을 만들기위해서는 standalone singleton object 를 사용하여 main method 를 제공해야 한다. 이 main method 는 parameter 한개를 입력 받는데, Java 의 main 과 유사하다. main method 를 가지고 있는 모든 standalone object 는 응용프로그램을 실행 할 수 있다. 아래의 코드는 응용프로그램의 인자로 들어온 값들의 check sum 을 알려주는 프로그램이다.
import ChecksumAccumulator.calculate
object Summer {
def main(args: Array[String]) {
for (arg <- args)
println(arg + ": " + calculate(arg))
}
}
compile 하는 방법은 간단하다.
$ scalac Summer.scala
실행방법도 간단하다.
$ scala Summer How are you doing?
여기서 main method 안에 들어오는 인자의 이름은 args 이고 type 은 String 의 배열이다. 그러므로 인자가 가질 수 있는 것이 가변적으로 여러개라는 의미이다.
Scala 에서는 method 의 인자의 이름이 먼저 오고 그 다음에 ":" (콜론) 이 오고 다음에 Type 이 오게 된다.
또 다른 방법으로도 응용프로그램을 만들 수 있다. 바로 Application trait 을 이용하는 방법이다.
import ChecksumAccumulator.calculate
object Summer extends Application {
for (arg <- args)
println(arg + ": " + calculate(arg))
}
간단하다. main method 를 바로 없애고, Application 이라는 trait 을 상속한다는 의미에서 extends 키워드를 사용하면 끝이다.
Scala 에서는 Java 와 달리, Class 혹은 Interface 를 상속받을 경우, 키워드는 항상 extends 를 사용한다.
대신 코드에서 알 수 있듯이 프로그램 실행과 같이 들어오는 command line 인자값들을 이용할 수 없다는 단점이 존재한다.
그리고, JVM 의 thread 에 관한 제약사항들이 있어서 multi -threaded 프로그램을 작성을 하려면 Application trait 을 이용할 수 없다.
마지막으로 JVM 의 몇가지 구현은 Application trait 을 이용해서 실행하는 프로그램을 최적화를 잘 하지 못한다. 그래서 성능상의 문제가 될 수 있다.
결론은 Scala 로 응용프로그램을 만들기 위해서는 main method 를 사용하는 방법을 선택하는 것이 multi-threaded, 성능, 인자값을 받을 수 있다 는 측면에서 유리하다는 사실을 알 수 있다. 돌려말하면, 아주 간단하고 single-threaded 프로그램에만 Application trait 을 사용하라는 말이다. :)
'Programming > Scala' 카테고리의 다른 글
Scala 2.10 new features (0) | 2013.02.05 |
---|---|
Set 간단 팁 (0) | 2012.11.27 |
Scala - Implement rational number (Scala 언어로 유리수 구현) (0) | 2011.11.10 |
Scala - Pattern matching example 2 (Scala 언어로 패턴 매칭하기) (0) | 2011.11.10 |
Scala - Creating IntelliJ Scala project using sbt (sbt 를 이용하여 IntelliJ 용 Scala project 생성하기) (0) | 2011.11.10 |