377
8
장
스칼라 객체지향 프로그래밍
예를 들어 다음 메서드에
USPhoneNumber
를 넘기는 경우에는 반드시 인스턴스를 할당해야 한다.
def toDigits
(
d
:
Digitizer
,
str
:
String
)
=
d
.
digits
(
str
)
...
val digs
=
toDigits
(
new USPhoneNumber
("
987
-
654
-
3210
"),
"
123
-
Hello
!
-
456
")
//
결과
:
digs
:
String
=
123456
또한 다음 매개변수화한 메서드에
USPhoneNumber
를 넘기는 경우
USPhoneNumber
의 인스턴스
를 할당해야 한다.
def print
[
T
](
t
:
T
)
=
println
(
t
.
toString
)
print
(
new USPhoneNumber
("
987
-
654
-
3210
"))
//
결과
:
(
987
)
654
-
3210
요약하면, 값 클래스는 부가 비용을 적게 쓰면서 확장 클래스 (타입 클래스)를 정의하거나, 어
떤 분야에서 의미 있는 이름을 타입에 부여 (예를 들면
Dollar
)할 수 있는 방법이다.
NOTE
_
값 타입이라는 용어는 스칼라에 오랫동안 있었던
Short
,
Int
,
Long
,
Float
,
Double
,
Boolean
,
Char
,
Byte
,
Unit
타입을 가리킨다. 값 클래스는
AnyVal
로부터 파생된 클래스를 정의할 수 있는 새로운 스
칼라 구성 요소를 말한다.
값 클래스의 구현에 대해 자세히 알고 싶다면 ‘
SIP
-
15
:
Value
Classes
’를 보라.
SIP
은 스칼라
개선 과정
Scala
Improvement
Process
의 약자다. 이는 새로운 언어나 라이브러리 기능을 제안하기 위한
스칼라 커뮤니티의 처리 방식이다.
8.4
부모 타입
자식 또는 파생 타입을 부모 또는 기반 타입에서 파생시키는 것은 대부분의 객체지향 언어의 핵
심 원칙이다. 이러한 메커니즘은 재사용, 캡슐화, 그리고 다형적 동작(타입 계층에서 인스턴스
의 실제 타입에 따라 달라지는 동작 )을 위한 것이다.
Get 프로그래밍 스칼라: 실용적인 스칼라 활용법을 익히는 가장 확실한 실전 바이블 (2.11.x 버전 기반) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.