Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

고차 함수

Rust는 고차 함수(Higher Order Functions, HOF)를 제공합니다. 이들은 하나 이상의 함수를 인자로 받거나 더 유용한 함수를 만들어내는 함수들입니다. HOF와 게으른(lazy) 이터레이터는 Rust에 함수형 프로그래밍의 풍미를 더해줍니다.

fn is_odd(n: u32) -> bool {
    n % 2 == 1
}

fn main() {
    println!("1000 미만의 홀수 제곱값들의 합 찾기");
    let upper = 1000;

    // 명령형 접근 방식
// 누적 변수 선언
    let mut acc = 0;
    // 반복: 0, 1, 2, ... 무한대까지
    for n in 0.. {
        // 숫자를 제곱합니다
        let n_squared = n * n;

        if n_squared >= upper {
            // 상한을 초과하면 루프를 종료합니다
            break;
        } else if is_odd(n_squared) {
            // 홀수라면 값을 누적합니다
            acc += n;
        }
    }
    println!("명령형 스타일: {}", acc);

    // 함수형 접근 방식
    let sum: u32 =
        (0..).take_while(|&n| n * n < upper) // 상한 미만
             .filter(|&n| is_odd(n * n))     // 홀수인 것들
             .sum();                         // 합계를 구함
    println!("함수형 스타일: {}", sum);
}

OptionIterator는 상당수의 HOF를 구현하고 있습니다.