111
2
입력은 조금만, 일은 더 많이
2.8
리터럴
앞에서 이미 가지 리터럴
literal
value
살펴봤다. 예를 들어
val
book
= "
Programming
Scala
"
book
이라는
val
String
타입의 리터럴로 초기화하며,
(
s
:
String
) =
>
s
.
toUpperCase
함수 리터럴이다. 스칼라의 리터럴 지원을 전부 살펴보자.
2.8.1
정수 리터럴
정수 리터럴은 십진수,
16
진수, 또는
8
진수 표현이 있다. 자세한 내용을 [표
2
-
2
]에 정리했다.
2-2
정수 리터럴
4
종류 형식
10
진수
0
또는
0
아닌 숫자 다음에
0
또는 이상의 숫자(
0
-
9
)위치함
0
,
1
,
321
16
진수
0x
다음에
1
이상의
16
숫자(
0
-
9
,
A
-
F
,
a
-
f
)위치함
0xFF
,
0x1a3b
8
진수
4
0
다음에
1
이상의
8
숫자(
0
-
7
)위치함
013
,
077
리터럴에
-
기호를 붙이면 음수를 표현한다.
Long
리터럴의 경우,
Long
으로 선언된 변수에 대입하는 경우가 아니라면 뒤에
L
이나
l
여야 한다. 그렇지 않으면
Int
타입으로 추론된다. 정수 리터럴의 정상값의 범위는 값을 대입할
변수의 타입에 따라 결정된다. [표
2
-
3
]은 이런 범위를 보여준다. 이때 양끝도 범위에 포함된다.
2-3
정수 리터럴의 허용 범위(양끝도 포함)
대상 타입 최솟값(포함) 최댓값(포함)
Long
-
2
63
2
63
-
1
Int
-
2
31
2
31
-
1
Short
-
2
15
2
15
-
1
Char 0 2
16
-
1
Byte
-
2
7
2
7
-
1
정수 리터럴 수가 범위를 넘어서는 경우 컴파일 오류가 발생한다. 다음 예제를 보자.
4
역주_
8
진수는 스칼라
2
.
10
부터 사용 중단 안내되었다.
2
.
11
부터는 오류가 나므로 사용할 수 없다.
112
1
스칼라와의 만남
scala
>
val i
=
1234567890123
<
console
>
:
1
:
error
:
integer number too large
val i
=
12345678901234567890
^
scala
>
val i
=
1234567890123L
i
:
Long
=
1234567890123
scala
>
val b
:
Byte
=
128
<
console
>
:
19
:
error
:
type mismatch
;
found
:
Int
(
128
)
required
:
Byte
val b
:
Byte
=
128
^
scala
>
val b
:
Byte
=
127
b
:
Byte
=
127
2.8.2
부동소수점 리터럴
부동소수점
floating
-
point
리터럴
5
처음에 음수 부호가 있거나 없을 있고, 뒤에
0
이상
의 숫자가 온 다음에 소수점(
.
)오고, 그다음에
1
개 이상의 숫자가 온다.
Float
리터럴이라
뒤에
f
F
붙여야 한다. 그렇지 않으면
Double
간주한다.
Double
리터럴에도
d
D
붙일 있다.
부동소수점 리터럴에는 지수가 들어갈 수도 있고 생략될 수도 있다. 지수 부분은
e
E
다음에
부호 (
+
,
-
)선택적으로 오고, 뒤에 여러 숫자가 오는 형식이다.
다음은 가지 부동소수점 리터럴 예제다. 따로
f
F
접미사를 붙여서
Float
임을 표시하지
으면
Double
추론된다.
.
14
3
.
14
3
.
14f
5
역주_ 과학기술계산을 하는 프로그래머라면 이를 알아둘 필요가 있다. 간단한 소개 문서로는
https
://
goo
.
gl
/
KpRH7B
있다(한글).
관심 있는 독자는
http
://
goo
.
gl
/
cv9MJK
이나
http
://
goo
.
gl
/
JmZWE4
등을 참조하라.
113
2
입력은 조금만, 일은 더 많이
3
.
14F
3
.
14d
3
.
14D
3e5
3E5
3
.
14e
+
5
3
.
14e
-
5
3
.
14e
-
5
3
.
14e
-
5f
3
.
14e
-
5F
3
.
14e
-
5d
3
.
14e
-
5D
Float
모두
IEEE
754
32
비트 단정도
single
-
precision
(기본 정밀도 )
2
부동소수점값이다.
Double
모두
IEEE
754
64
비트 배정도
double
-
precision
(
2
정밀도 )
2
부동소수점값이다.
스칼라
2
.
10
이전에는 소수점 (마침표 ) 뒤에 아무 숫자도 없는
3
.
이나
3
.
e5
같은 부동소수점
리터럴을 사용할 수 있었다. 하지만 마침표가 메서드 이름 앞에 위치하면 일부 모호한 경우가
있었다. 예를 들어
1
.
toString
의 경우,
1
Int
로 봐야 할지
1
.
0
이라는
Double
로 봐야 할지
해석이 애매했다. 결국 소수점 뒤에 숫자가 하나도 없는 리터럴은 스칼라
2
.
10
에서 사용 중단
안내되었고,
2
.
11
부터는 이상 허용되지 않는다.
2.8.3
불린 리터럴
불린
Boolean
리터럴은
true
false
뿐이다. 이런 값이 대입되는 변수의 타입은
Boolean
으로
론된다.
scala
>
val b1
=
true
b1
:
Boolean
=
true
scala
>
val b2
=
false
b2
:
Boolean
=
false
114
1
스칼라와의 만남
2.8.4
문자 리터럴
문자 리터럴은 인쇄 가능한
printable
유니코드 문자나 이스케이프 시퀀스를 작은따옴표 사이에
은 것이다. 유니코드로
0
부터
255
사이의 값은 또한
8
진 이스케이프, 즉 역슬래시(
\
) 다음에
최대 세 개의
8
숫자가 오는 형태로도 표현 가능하다. 문자나 문자열 리터럴에서 역슬래시
문자가 정상적인 이스케이프 시퀀스를 만들어내지 못하면 컴파일 시점에 오류가 발생한다.
다음은 가지 예다.
'
A
'
'\
u0041
'
//
유니코드
A
'\
n
'
'\
012
'
//
\
n
8
진수로
표현한
'\
t
'
유효한 이스케이프 시퀀스는 [표
2
-
4
]와 같다.
2-4
문자 이스케이프 시퀀스
시퀀스 의미
\
b
백스페이스
Backspace
(
BS
)
\
t
가로
Horizontal
tab
(
HT
)
\
n
넘김
Line
feed
(
LF
)
\
f
용지 넘김
Form
feed
(
FF
)
\
r
앞으로
Carriage
return
(
CR
)
\"
큰따옴표
Double
quote
(
"
)
\'
작은따옴표
Single
quote
(
'
)
\\
역슬래시
Backslash
(
\
)
\
u0009
()같은 인쇄 불가능한
nonprintable
유니코드 문자는 사용할 없다.
\
t
같은 형식을
사용하라. [표
2
-
1
]에 언급한 것처럼
=
>
대신
로,
-
>
대신
로,
<
-
대신
대체할 있다
사실에 유의하라.
115
2
입력은 조금만, 일은 더 많이
2.8.5
문자열 리터럴
문자열 리터럴은 큰따옴표 사이에 있는 문자들의 시퀀스이거나,
"""..."""
과 같이
3
큰따옴
사이에 있는 문자들의 시퀀스다.
큰따옴표 사이에 있는 문자열 리터럴의 경우에는 문자 리터럴과 동일한 문자들만 허용된다.
지만 문자열에 큰따옴표 (
"
)가 들어가야 한다면 반드시
\
문자를 사용해서 ‘이스케이프’시켜야
한다. 다음 예를 보자.
"
Programming
\
nScala
"
"
He exclaimed
,
\"
Scala is great
!\""
"
First
\
tSecond
"
3
큰따옴표로 둘러싸인 문자열 리터럴은 여러
multiline
문자열 리터럴이라고 부르기도
다. 이런 문자열은 여러 줄에 걸쳐 있을 수 있다. 이때 줄 바꿈 문자도 문자열에 들어간다. 이
리터럴에는 큰따옴표 한두 개를 포함해서 어떤 문자든 들어갈 있지만,
3
큰따옴표는 들어
없다.
3
큰따옴표는
\
포함된 문자열이 [표
2
-
4
]와 같은 정상적인 유니코드나 이스케
이프 시퀀스를 만들지 않는 경우에 유용하게 활용할 있다. 특별한 의미가 있는 이스케이프
자가 아주 많이 쓰이는 표현
regular
expression
좋은 예다. 반대로, 리터럴에 이스케이프
시퀀스를 포함시켜도 의미를 해석하지 않는다.
아래에 가지 예가 있다.
"""
Programming
\
nScala
"""
"""
He exclaimed
,
"
Scala is great
!"
"""
"""
First line
\
n
Second line
\
t
Fourth line
"""
번째 예에서는 뒤쪽
"""
바로 앞에 빈 칸을 넣어야 한다. 그렇지 않으면 구문분석 오류가 발
생한다.
"
Scala
is
great
!"
라는 인용문을 끝내는 번째
"
이스케이프하기 위해
"
Scala
is
great
!\"
같이 바꿔도 소용없다.

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.