Rust — функции высшего порядка
В Rust у нас есть концепция функций высшего порядка, которая передает функцию другой функции после того, как переменная сохранена в другой функции. Чтобы определить функцию в Rust, мы используем ключевое слово fn.
Синтаксис:
fn <function name>()
{
}
Функции высшего порядка в Rust — это функции, которые принимают более одной функции и производят больше полезных функций. как только функции сохраняются внутри переменной, они могут передавать функцию из одной функции в другую.
Для определения функций более высокого порядка нам нужно импортировать трейты:
- Карта принимает «внутренние» значения, которые могут быть отображены переменными.
- sum() используется для итерации итераций.
- filter() — это структура, которая фильтрует элементы итератора.
- take_while() — это структура, которая принимает итератор, а затем возвращает логическое значение.
Пример:
Rust
// Rust code for Higher order function fn check_odd(num: u32) -> bool { num % 2 == 1 } fn main() { let upper_limit = 10; println!( "Sum of all squared numbers under {}" ,upper_limit); let squared_odd_numbers: u32 = (0..).map(|num| num * num) .take_while(|&num_squared| num_squared < upper_limit) .filter(|&num_squared| check_odd(num_squared)) .sum(); println!( "Value (functional approach): {}" , squared_odd_numbers); } |
Выход:
Объяснение:
В этом примере мы использовали функциональный подход при проверке условия. Здесь мы объявили upper_limit и инициализировали значение squared_odd_numbers (имеющее 32-битное значение) и передали их внутри карты с условием, что если все числа в квадрате ниже верхнего предела, мы будем фильтровать их (используя условие num_squared), а затем это суммировало бы их. Наконец, мы печатаем значение на экране.