본문 바로가기
Rust - 교육

[Rust 교육] 러스트의 함수형 프로그래밍 기법

by CodeCrossover 2023. 8. 17.
반응형

"러스트에서의 함수형 프로그래밍 기법을 깊이 있게 탐구합니다. 불변성, 고차 함수, 맵, 필터, 폴드, 클로저 등 러스트의 핵심 함수형 특징을 상세하게 알아보세요. 안전하고 효율적인 코드 작성을 위한 필수 가이드입니다."

 

러스트는 시스템 프로그래밍 언어로서의 성능과 안전성을 지향하면서도, 함수형 프로그래밍의 특징을 많이 포함하고 있습니다. 이 글에서는 러스트의 함수형 프로그래밍 기법에 대해 상세하게 알아보겠습니다.


1. 불변성 (Immutability)

러스트는 기본적으로 변수에 대한 불변성을 지향합니다. 이는 함수형 프로그래밍의 핵심 원칙 중 하나입니다.

let x = 5; // 기본적으로 불변
// x = 6; // 이 코드는 오류를 발생시킵니다.

 

2. 고차 함수 (Higher-Order Functions)

러스트는 함수를 값으로 다룰 수 있으며, 다른 함수에 함수를 인자로 전달하거나 반환할 수 있습니다.

// 함수를 인자로 받는 함수
fn apply<F>(f: F, x: i32) -> i32
where
    F: Fn(i32) -> i32,
{
    f(x) * 2
}

let double = |x| x * 2;
println!("{}", apply(double, 5)); // 20을 출력

 

3. 맵, 필터, 폴드 (Map, Filter, Fold)

러스트의 컬렉션 타입들은 함수형 프로그래밍에서 자주 사용되는 `map`, `filter`, `fold`와 같은 메서드를 제공합니다.

let numbers = vec![1, 2, 3, 4, 5];

// 각 숫자를 제곱
let squared: Vec<_> = numbers.iter().map(|&x| x * x).collect();
// squared는 [1, 4, 9, 16, 25]

// 짝수만 선택
let evens: Vec<_> = numbers.iter().filter(|&&x| x % 2 == 0).collect();
// evens는 [2, 4]

 

4. 클로저 (Closures)

러스트의 클로저는 주변 환경의 변수를 캡처하고 저장할 수 있는 익명 함수입니다.

let factor = 2;
let multiplier = |x| x * factor;
println!("{}", multiplier(5)); // 10을 출력

러스트는 함수형 프로그래밍의 강력한 기법들을 제공하며, 이를 통해 더 간결하고 안전한 코드를 작성할 수 있습니다. 이 글을 통해 러스트의 함수형 프로그래밍 기법에 대한 깊은 이해를 얻었기를 바랍니다.

반응형