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); } }