scala 썸네일형 리스트형 Scala - Pattern matching example 2 (Scala 언어로 패턴 매칭하기) Scala 에서는 Pattern matching 을 할경우, 특수 문자들을 사용하여 수행할 수 있다. 허용되는 특수문자는 @, _, * 들이 있다. 1. "_" : "_" 는 어떠한 것과도 매칭될 수 있는 와일드카드 키워드이다. 예제: 아래에서는 matchChoice 함수에 어떠한 숫자도 입력할 수 있지만, 0 과 1을 제외한 다른 수를 입력하면 Other choices 라는 메시지를 출력한다. def matchChoice(num: Int) = { num match { case 0 => println("Choice is zero") case 1 => println("Choice is one") case _ => println("Other choices") } } 2. "@" : "@" 는 특정 패턴이나 .. 더보기 Scala - Creating IntelliJ Scala project using sbt (sbt 를 이용하여 IntelliJ 용 Scala project 생성하기) Scala 프로그램을 컴파일하고 빌드하기 위해서 sbt 라는 프로그램을 사용한다. sbt 는 Simple Build Tool 의 약자로서, 자바나 Scala 프로그램을 Ant, Maven 과 유사하게 빌드할 때, 사용하는 프로그램이다. sbt 는 단독으로 사용해도 좋지만, IntelliJ IDE 와 같이 사용하면 좀더 편리하게 사용할 수 있다. IntelliJ 의 빌드 방법이 SBT 보다 섬세하고 유연하지 못하기 때문에, 빌드는 sbt 에 맡기고, 소스코드 편집은 IntelliJ 에서 하는 것이 현명한 개발 방법이라고 생각한다. Scala 프로그램을 애초에 IntelliJ 로 프로젝트를 생성하여 계속 작성해 왔다면, 별 문제가 없지만, 그렇지 않은 경우 새로 프로젝트를 생성해야 한다. 하지만 Intell.. 더보기 Scala - Basic calculator using Parser Combinator (스칼라 언어로 만드는 간단한 사칙 연산 계산기 프로그램) Scala 언어에서 지원하는 매력적인 라이브러리가 있는데, 그 중 하나가 Parser Combinator 이다. 이 라이브러리를 이용하면, Parser 를 작성하기가 쉽고, 소스가 이해하기도 쉽다. 그러므로 유지보수도 쉬워진다. 그래서 연습삼아서 계산기 프로그램을 작성해 보았다. 간단하게 사칙연산을 지원하고 숫자는 자연수, 정수, 소수(floating point number) 까지만 지원된다. 소스는 아래와 같다. package parser import util.parsing.combinator.JavaTokenParsers /** * User: starblood * Date: 8/1/11 * Floating point 를 계산하는 프로그램. * Scala 언어에서 지원하는 Parser Combinato.. 더보기 Scala - Pattern matching Scala 에는 pattern matching 이라는 기능이 있는데, Java 언어와 마찬가지로 case 문을 쓰는 것이 비슷하긴 한데, 문법은 약간 틀리다. 기본적인 문법은 아래의 예제를 보면 이해가 쉬울 듯 하다. 1 val firstArg = if (!args.isEmpty) args(0) else "" 2 3 val friend = 4 firstArg match { 5 case "salt" => "pepper" 6 case "chips" => "salsa" 7 case "eggs" => "bacon" 8 case _ => "huh?" 9 } 10 11 println(friend) 1 번째 라인에서는 프로그램의 command line argument 로부터 입력을 받는다. (def main(args.. 더보기 Scala - IDE recommendation (scala 를 위한 개발 IDE 추천) Scala 프로그램을 개발하기 위한 IDE로는 Eclipse와 IntelliJ가 있다. 두 개발 IDE 모두 Scala 개발환경을 plug-in 형태로 제공한다. 먼저 IntelliJ 에서 Scala plug-in 을 설치하려면 IDE의 메뉴 File -> Settings -> Plugins 에서 Scala 를 Available 탭에서 찾은뒤에 설치하면 된다. 두 번째는 Eclipse 에서 Software update 를 통하여 설치하는 것인데, 아래 사이트에서 Eclipse 용 plug-in을 다운받아서 설치하면 된다. http://www.scala-ide.org/ 개인적으로 Java Programming 을 할 때에는 Eclipse 를 더 선호하지만, Scala Programming을 할때에는 Deb.. 더보기 Scala - syntax highlighting for vi vim vi 에디터를 사랑하는 나로서는, 가끔씩 IntelliJ 에서 scala 프로그램을 작성하는 것보다 vi 에디터에서 작성하는 것이 더 편할 때가 있다. 이럴때마다 문법 highlighting 이 되지 않아서 조금 불편해서 이번기회에 설정을 해두기로 했다. 이미 문법이 지원되어서 vim 공식 웹사이트에서 받아가면 된다. 하지만, 받아가는 것은 쉽지만 설정하는 것은 초보자에게 쉽지 않을 거라고 생각이 된다. 그래서 따로 정리를 해두기로 마음을 먹었다. 첨부한 파일을 자신의 HOME 디렉토리의 .vim 디렉토리에 압축 해제한다. $ cd ~/.vim $ unzip scala_vim.zip 이렇게 하면 ftdetect, indent, syntax 라는 3개의 디렉토리가 보이게 된다. 아래의 그림은 vi 에디터에.. 더보기 Scala - side effect 란 무엇인가? 아래와 같은 코드가 있다고 하자. 아래의 코드는 합계를 계산하는 프로그램이다. class ChecksumAccumulator { private var sum = 0 def add(b: Byte): Unit = sum += b // Side Effect 가 있는 함수 def checksum(): Int = ~(sum & 0xFF) + 1 } 여기서 add 함수는 side effect 가 있는 코드이다. side effect 란 일반적으로 file I/O 나, 함수의 바깥쪽에 있는 어떤 상태를 변경시키는 것을 의미한다. 여기서 함수의 바깥쪽에 있는 어떤 상태라는 것은 private var sum 이라는 변수이다. 이 변수는 instance variable 로서 각각의 객체의 상태를 나타내준다. Scala 언.. 더보기 Scala - singleton object Scala 언어가 Java 보다 객체 지향 언어의 개념이라고 할 수 있는 것은 singleton objects 라고 할 수 있다. Scala 언어에서는 static member들을 가질 수 없다. 대신에 Scala 는 singleton objects 라는 것으로 이를 대신한다. singleton objects 의 정의는 class 라는 키워드를 object 라는 키워드로 사용하는 것을 제외하고는 클래스 정의와 비슷하다. 아래는 예제 코드이다. import scala.collection.mutable.Map object ChecksumAccumulator { private val cache = Map[String, Int]() def calculate(s: String): Int = if (cache.co.. 더보기 Scala 컴파일러 설치 필요에 의해서 Functional Language 를 하나 배워야 겠다고 생각을 했다. Functional Language 는 여러가지가 있지만, 그 중에서 Java Virtual Machine 에서 구동되고 Java API를 사용할 수 있는 유연성 좋은 Scala 라는 언어를 사용하기로 결심했다. 이 언어를 사용하여 프로그램을 작성, 컴파일, 실행을 하려면 Scala compiler 가 있어야 하고, JDK 가 필요하다. 그래서 JDK 를 먼저 설치하고 Scala 컴파일러를 설치하도록 한다. Scala 라는 여러 OS 에서 구동가능하지만, 본인은 Windows 를 사용하기 때문에 운영체제를 Windows로 가정하고 설치를 하려고 한다. Scala 컴파일러는 IzPack Installer 라는 것을 사용.. 더보기 이전 1 2 3 다음