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
   13   14   15   16   17   18   19   20   21   22   23