Page 18 -
P. 18
일 반 적 인 해 법 은 v a r 참 조 를 n u l l 로 초 기 화 하 고 나 중 에 의 미 있 는 값 을 대 입 하 는 것 이 다. 이 렇 게
바 꾼 값 은 이 제 거 의 바 뀌 지 않 는 다. 하 지 만 코 틀 린 은 널 이 될 수 있 는 타 입 (n ull a bl e t y p e)과 널 이
될 수 없 는 타 입 (n o n - n ull a bl e t y p e)을 구 분 하 므 로 이 런 식 으 로 참 조 를 사 용 하 기 는 힘 들 다. 널 이 될
수 없 는 타 입 은 N u l l P o i n t e r E x c e p t i o n 이 발 생 할 위 험 이 없 기 때 문 에 훨 씬 안 전 하 다. 필 드 선 언 시
점 에 는 값 을 알 지 못 하 지 만, 일 단 초 기 화 되 고 나 면 절 대 바 뀌 지 않 는 값 이 있 다. 이 때 어 쩔 수 없
이 v a r 를 사 용 해 야 된 다 면 슬 픈 일 이 다. 이 런 경 우 다 음 처 럼 널 이 될 수 없 는 참 조 대 신 널 이 될
수 있 는 참 조 를 써 야 한 다.
v a r n a m e : S t r i n g ? = n u l l
. . .
n a m e = g e t N a m e ( )
여 기 서 n a m e 이 라 는 참 조 의 타 입 은 S t r i n g ? 인 데, 이 타 입 은 널 이 될 수 있 는 타 입 이 다. 이 참 조 의
타 입 을 S t r i n g 으 로 하 면 어 떨 까 하 고 생 각 할 수 도 있 겠 지 만, 실 제 로 는 그 럴 수 없 다. 널 이 될 수
없 는 S t r i n g 타 입 을 사 용 하 려 면 다 음 과 같 이 초 기 화 되 지 않 은 참 조 임 을 나 타 내 는 특 별 한 문 자 열
을 사 용 해 야 한 다.
v a r n a m e : S t r i n g = " 초 기 화 _ 안 _ 됨 "
. . .
n a m e = g e t N a m e ( )
또 는 n a m e 에 빈 문 자 열 을 사 용 하 지 못 하 는 것 이 확 실 하 다 면 빈 문 자 열 로 초 기 화 되 지 않 은 참 조 를
표 현 할 수 도 있 다. 어 떤 경 우 든 초 기 화 한 후 절 대 값 이 바 뀌 지 않 더 라 도 참 조 선 언 에 v a r 를 사 용
해 야 한 다. 그 런 데 코 틀 린 은 더 나 은 해 법 을 제 공 한 다.
v a l n a m e : S t r i n g b y l a z y { g e t N a m e ( ) }
이 렇 게 쓰 면 n a m e 참 조 를 최 초 로 사 용 하 는 시 점 에 g e t N a m e ( ) 함 수 를 호 출 한 다. 여 기 서 람 다(l a m b d a,
함 수 값 을 람 다 라 고 도 부 름) 대 신 함 수 참 조 를 쓸 수 있 다.
v a l n a m e : S t r i n g b y l a z y ( : : g e t N a m e )
n a m e 이 라 는 참 조 를 최 초 로 사 용 한 다 는 말 은 그 참 조 가 가 리 키 는 값 을 사 용 하 려 고 최 초 로 n a m e 을
역 참 조 (d er ef er e n c e )한 다 는 말 이 다. 다 음 예 제 를 보 자.
f u n m a i n ( a r g s : A r r a y < S t r i n g > ) {
v a l n a m e : S t r i n g b y l a z y { g e t N a m e ( ) }
p r i n t l n ( " 안 녕 1 " )
0 5 2