이번 편의 목표: 연체료 계산을 함수로 빼고, 그 함수가 정수를 돌려주게 합니다.

fn 뒤에 이름, 매개변수, 반환 타입을 적습니다. 매개변수마다 타입이 필요합니다. 돌려주는 값의 타입은 -> 뒤에 적습니다. 함수 본문의 마지막 식에 세미콜론을 붙이지 않으면 그 식이 반환값이 됩니다.

Rust
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입니다.