87
2
장
입력은 조금만, 일은 더 많이
라고 부른다. 여러분이 지역적으로 수행한 일은 발생한 오류와 아무런 관련이 없고, 어딘가 다
른 곳에 원인이 있기 때문이다.
이런 버그는 공유된 변경 가능한 상태에의 접근을 동기화할 필요가 있는 다중 스레드 프로그램
에 가장 치명적이다. 이런 동기화는 제대로 하기 몹시 어렵다.
변경 불가능한 값을 사용한다면 이런 문제를 방지할 수 있다.
2.3
범위
메서드를 정의하는 법을 알아보자. 사용할 예제 중 일부에서 범위
Range
(
http
://
bit
.
ly
/
1wNfl5V
)
라는 개념을 사용한다. 그러므로 범위를 먼저 이해하고 넘어가자.
때로 어떤 시작 값부터 마지막 값에 이르는 수열이 필요한 경우가 있다.
Range
리터럴이 바로
그렇다. 다음 예는
Range
객체가 지원하는
Int
,
Long
,
Float
,
Double
,
Char
,
BigInt
(크기와
관계없이 임의의 정수를 지원,
http
://
bit
.
ly
/
13FUtUH
), 그리고
BigDecimal
(크기와 관계없
이 임의의 소수를 지원,
http
://
bit
.
ly
/
1b7tLWP
) 타입에 범위를 생성하는 방법을 보여준다.
범위를 만들 때는 끝 값을 포함시키거나 포함시키지 않고 만들 수도 있다. 또한 증분 값이
1
이
아닌 경우, 그 값을 지정할 수 있다. 다음 출력의 일부는 페이지 크기에 맞춰 줄 바꿈 했다.
scala
>
1 to 10
//
Int
범위
,
끝
값
포함
,
증분
1
,
(
1 to 10
)
res0
:
scala
.
collection
.
immutable
.
Range
.
Inclusive
=
Range
(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
)
scala
>
1 until 10
//
Int
범위
,
끝
값
제외
,
증분
1
,
(
1 to 9
)
res1
:
scala
.
collection
.
immutable
.
Range
=
Range
(
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
)
scala
>
1 to 10 by 3
//
Int
범위
,
끝
값
포함
,
증분
3
res2
:
scala
.
collection
.
immutable
.
Range
=
Range
(
1
,
4
,
7
,
10
)
scala
>
10 to 1 by
-
3
//
Int
범위
,
끝
값
포함
,
증분
3
,
큰
값부터
감소
res2
:
scala
.
collection
.
immutable
.
Range
=
Range
(
10
,
7
,
4
,
1
)
scala
>
1L to 10L by 3
//
Long
범위
,
끝
값
포함
,
증분
3
res3
:
scala
.
collection
.
immutable
.
NumericRange
[
Long
]
=
NumericRange
(
1
,
4
,
7
,
10
)
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.