이번 편의 목표: 연체료 계산을 함수로 빼고, 그 함수가 정수를 돌려주게 합니다.
fn 뒤에 이름, 매개변수, 반환 타입을 적습니다. 매개변수마다 타입이 필요합니다. 돌려주는 값의 타입은 -> 뒤에 적습니다. 함수 본문의 마지막 식에 세미콜론을 붙이지 않으면 그 식이 반환값이 됩니다.
fn overdue_fee(days: i32) -> i32 {
days * 100
}
fn main() {
let fee = overdue_fee(3);
println!("{fee}");
}overdue_fee(3)은 300을 돌려주고, 출력이 300입니다. days * 100 끝에 세미콜론을 붙이면 그 문장은 값을 돌려주지 않습니다. 반환 타입이 i32인데 값이 없으면 컴파일 오류입니다. return days * 100;이라고 적어도 같은 결과입니다. 짧은 계산은 세미콜론 없는 식이 더 짧습니다.
함수에 넘긴 i32는 복사됩니다. 호출 뒤의 days라는 이름은 함수 안에서만 살고, main 쪽 변수와는 다른 자리입니다. 문자열을 넘기면 이야기가 달라집니다. 그 차이는 05편에서 봅니다.
직접 해 보기
main에서 overdue_fee(5)를 출력하세요. 결과는 500이어야 합니다.
해설
함수 본문은 바꾸지 않습니다. 인자가 5이면 5 * 100이므로 500입니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.