일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Spring Batch
- SBT
- 엘라스틱서치
- scala
- nginx
- DDD
- apache storm
- Domain Driven Design
- Angular2
- hdfs
- Clean Code
- elasticsearch
- elastic search
- hibernate
- 도메인주도설계
- 스프링 배치
- Java
- 제주
- docker
- Linux
- Spring Boot
- Hbase
- Gradle
- design pattern
- Spring XD
- hadoop
- intellij
- spark
- Storm
- Spring
- Today
- Total
목록2016/11/01 (4)
욱'S 노트
단일 상속만을 지원하는 언어들과는 다르게 스칼라는 클래스를 재사용을 위한 다른 개념을 가지고 있다. 새로운 클래스 정의내에 클래스의 정의를 새로운 멤버 정의로 재활용할 수 있다. 이것을 믹스인-클래스 컴포지션이라고 한다.abstract class AbsIterator { type T def hasNext : Boolean def next : T }다음으로는 AbsIterator를 상속한 믹스인 클래스를 고려해보자. 클래스를 믹스인으로 사용될 수 있게 정의하기 위해서 trait 키워드를 활용한다. trait RichIterator extends AbsIterator { def foreach(f : T => Unit) = { while (hasNext) f(next) } }다음은 String의 각 캐릭터를 ..
트래잇은 자바에서의 인터페이스와 유사하다. 트래잇은 지원해야하는 메소드 시그니처를 명시한다. 자바 8에서처럼 스칼라는 부분적인 구현을 지원한다. 몇몇의 메소드의 기본 구현을 제공할 수 있다는 것을 의미한다. 클래스와는 반대로 생성자 파라미터를 가질 수 없다.trait Similarity { def isSimilar(x : Any) : Boolean def isNotSimilar(x : Any) : Boolean = !isSimilar(x) }두개의 메소드를 가지고 있다. isSimilar는 구현을 제공하지 않고 있지만 isNotSimilar는 구현을 제공한다. 결과적으로 이 트래잇과 결합하는 클래스는 isSimilar에 대한 구현만 하면 된다. 트래잇은 일반적으로 mixin 클래스 컴포지션으로 클래스와 ..
클래스는 객체를 생성하기 위한 정적인 템플릿이다.class Point (var x : Int, var y : Int) { def move(dx : Int, dy : Int): Unit = { x = x + dx y = y + dy } override def toString : String = "(" + x + "," + y + ")" } 스칼라에서 클래스는 생성자 인자로 파라미터를 전달할 수 있다. 위 코드는 두개의 인자를 가진 생성자를 정의를 하고 있다. x 와 y는 클래스의 어디서든 접근을 할 수 있다.클래스는 또란 두개의 메소드를 포함하고 있는데 move 와 toString이다. move는 두개의 정수를 전달받아 x와 y값을 변경하고 리턴은 없다. 여기서 Unit이라는 키워드가 보이는데 자바와 같은..
스칼라에서는 모든 타입이 객체이다. 스칼라에서는 클래스 기반으로 타입정의를 하기 때문에 모든 값은 클래스의 객체이다.스칼라의 모든 클래스는 scala.Any의 서브클래스이다. 그리고 scala.Any를 직접적으로 상속받는 두 개의 클래스가 있는데, scala.AnyVal과 scala.AnyRef이다. 이름에서 연상되듯이 value 클래스와 reference 클래스이다. 모든 value 클래스들은 기정의되어 있으며 자바와 같은 언어의 프리미티브 타입과 유사하다. 나머지 모든 클래스는 reference 타입으로 정의된다. 만약 우리가 클래스를 정의한다면 기본적으로 레퍼런스 타입이며 scala.AnyRef의 서브 클래스가 된다. 모든 유저가 정의하는 클래스는 암묵적으로 scala.ScalaObject를 상속한..