본문 바로가기

스칼라3

Trait 스칼라에는 자바의 Interface와 비슷한 trait라는 것이 존재한다. 비슷하면서도 다른 게 바로 자바의 Interface와 스칼라의 trait인데, 우선 자바의 Interface는 Interface 내에 정의만 가능하고 구현은 Interface를 상속받은 클래스 내에서 구현을 해야 했다.그에 반해 스칼라의 trait는 정의 뿐 아니라 실제 구현도 가능하기 때문에 사용자가 직접 구현을 하지 않아도 되는 장점을 가지고 있다.또한 Trait는 다중 상속 개념에 대해서 자바나 C++보다 합리적인 방안을 제시하고 있다. 이에 대한 설명은 차츰 진행하기로 하며, 우선 trait를 어떻게 사용하는지에 대해 살펴보자. trait Philosophical{ def philosophize(){ println("phi.. 2015. 4. 27.
[11강] 코드 중복 줄이기와 Currying 파일의 마지막 이름이 입력된 문자와 일치하는지를 찾는 함수, 파일 이름에 해당 문자열이 포함되어 있는지를 찾는 함수가 아래와 같이 정의되어 있다고 가정하자. def fileEnding(query : String) = { for (file fileName.contains(query)) filesMatching((fileName:String, query:String) => fileName.endsWith(query)) 함수는 filesMatching 함수에서 인자 타입을 명시하였기 때문에 인자 타입을 생략할 수가 있다. def fileEnding(query:String) = filesMatching(query, (fileName, query) => fileName.endsWith(query)) 또한 file.. 2015. 4. 24.
[9강] 제어 문 스칼라에서 제어 구문은 if, while, for, try, match 가 전부이다. if 스칼라에서 if 표현식은 단지 표현식이 아니라 값을 리턴한다. 그래서 아래와 같은 표현이 가능하다. val filename = if(!args.isEmpty) args(0) else "default.txt" 위와 같이 표현을 하면 좋은 게 변수 선언과 동시에 값을 배정할 수가 있기 때문에 val 변수 사용이 가능하다는 것이다.이렇게 val로 한번 선언한 변수는 final 효과를 지니기 때문에 효과적인 코딩 스타일을 구사할 수 있다. while while은 Unit 타입의 결과를 리턴한다. Unit은 빈괄호 ()를 리턴하기 때문에 void와는 다르다고 할 수 있다.변수에 재할당 하는 코드 역시 Unit을 리턴한다. .. 2015. 4. 21.