8 Functions

함수들은 fn 키워드를 사용하여 선언된다. 그의 인자들은 변수처럼, 타입 주해되어야 하고, 만약 함수가 반환하는 값이 있다면, 반환 타입은 반드시 화살 -> 뒤에 명시되어야 한다.

함수의 마지막 표현은 반환 값을 위해 사용될 것이다. 그렇지 않으면, return 문은 그 전에 반복문 내부 혹은 if문 중에서 반환하기 위해 사용될 수 있다.

FizzBuzz를 함수를 사용해 다시 작성해보자!

// C/C++과는 다르게, 함수 정의에 순서 제약이 없다.
fn main() {
    // 여기에서 함수를 사용하고 이후에 어디든 정의하면 된다.
    fizzbuzz_to(100);
}

// boolean 값을 리턴하는 함수
fn is_divisible_by(lhs: u32, rhs: u32) -> bool {
    // 코너 케이스, 조기 반환.
    if rhs == 0 {
        return false;
    }

    // 이는 표현체로, `return` 지시어가 여기선 필요치 않다.
    lhs % rhs == 0
}

// 값을 반환 "하지 않는" 함수, 실제론 단위 타입 `()`를 반환.
fn fizzbuzz(n: u32) -> () {
    if is_divisible_by(n, 15) {
        println!("fizzbuzz");
    } else if is_divisible_by(n, 3) {
        println!("fizz");
    } else if is_divisible_by(n, 5) {
        println!("buzz");
    } else {
        println!("{}", n);
    }
}

// 함수가 `()`를 반환하면, 반환 타입은 선언에서 생략될 수 있음.
fn fizzbuzz_to(n: u32) {
    for n in 1..n + 1 {
        fizzbuzz(n);
    }
}

results matching ""

    No results matching ""