`return` 표현식
return 표현식
지금 실행 중이던 함수를 벗어나 값을 돌려주고 싶을 때 return 표현식을 써요. 함수 중간에서 "여기서 결과를 내고 끝내자" 하고 명시적으로 탈출하는 문법이에요.
본문
return 표현식은 키워드 return으로 표시해요.
구문 (Syntax)
ReturnExpression → return Expression?
return 표현식을 평가하면 이런 일이 벌어져요.
- 인자(argument)를 현재 함수 호출의 지정된 출력 위치로 이동(move)시켜요.
- 현재 함수의 활성화 프레임(activation frame)을 파괴해요.
- 제어를 호출자(caller)의 프레임으로 넘겨요.
예를 들어 두 수 중 큰 값을 돌려주는 함수를 보면요.
fn max(a: i32, b: i32) -> i32 {
if a > b {
return a;
}
return b;
}
a > b가 참이면 return a에서 바로 a를 돌려주고 함수가 끝나요. if 조건이 거짓이면 마지막의 return b로 흐르고요.
그리고 return 표현식은 발산(diverging) 을 나타내요. 발산하는 식의 타입은 !(never 타입)이에요. 함수의 끝에 도달할 수 없는 경우처럼, 제어가 다음으로 넘어가지 않는다는 뜻이에요.