본문 바로가기

프로그래밍 언어/코틀린_쌩초보를 위한 기초

쌩초보를 위한 기초_17_흐름 중단 return

코드 실행 멈추기

 

조건문, 반복문을 사용할 때 실행 중이던 코드를

바로 중단하거나 조건으로 되돌아 가도록 할 때 사용하는 키워드 3가지

 

  • return
  • break
  • continue

 

return(리턴, 반환): 중단하고 함수내에서 결과값을 반환하거나 지정된 레이블로 이동한다.

break(브레이크, 중지): 조건에 상관없이 반복문을 끝내고 나간다.

continue(컨티뉴, 계속): 조건을 모두 실행하지 않고 다시 조건문으로 간다.

 

return(리턴) 키워드

 

먼저 아래 함수를 실행하면 결과는 어떻게 나올까?

 

함수는 다음과 같은 과정으로 실행한다.

 

변수 foo에 목록(list)을 Int타입으로 넣는다.(1,2,3,4,5)

변수foo의 각 항목에 대해(forEach) 실행하라

{ 만약 it이 3과 같으면

  출력하라(it을) }

출력하라("도착가능")

 

  • listOf ( ) 함수는 리스트(목록)을 만들 때 사용한다. 코틀린의 자동 추론으로 <Int>는 생략할 수 있다.
  • forEach ( ) 함수는 주어진 리스트의 각 항목을 실행한다.
  • it은 각 항목이 조건에 들어올 때 마다 매개변수 이름을 새로 만드는 것이 불필요 하므로 각 항목의 대표 이름으로 사용하는 키워드이다. 영어 뜻 그대로 암시적으로 "그것"
  • 코딩에서 자주 볼 수 있는 foo는 주로 별로 중요하지 않은 것의 이름으로 사용하며 특별한 의미 없이 옛날 부터 관습적으로 사용하고 있음.

 

이번에는 위 함수에 return을 넣어보자.

위 함수는 어떤 결과가 나올까?

return 키워드는 결과값을 반환 후 main()함수를 종료하기 때문에 "UnReachable"이 출력 안됨.

이렇게 호출한 본래 함수로 반환하고 종료하는 것을 non-local(비지역) 반환이라고 함.

 

만약 return 후 가장 가까운 함수 밖으로 나가게 하려면 레이블@ (label at)을 사용한다.

함수명 다음에 레이블명@으로 선언하고 return뒤에는 @레이블명을 붙인다.

 

함수명 레이블명@ {

    return@레이블명

}

 

아래 코드를 작성한 후 실행 해보자.

위 코드의 return@lat 은 항목이 3이 되면 다음 줄로 가지 않고 lat@ 레이블로 값(3)을 반환한다.

다음 항목 4, 5를 출력한 후에는 해당 함수의 실행부분(중괄호)을 빠져나간다.

참고로 레이블 이름은 아무 이름으로 할 수 있지만 관습적으로는 lit로 하는 것 같은데 label과 it을 합한 것인지는 모르겠다. 나는 label과 at기호를 합쳐서 lat로 표현 했다.

 

다음 글에서는 break , continue에 대해 알아본다.

끝.