Последовательный вызов функций в Rust
Можно результат работы одной функции передать параметром в другую.
Сначала прибавим единицу к числу 3, а затем удвоим
результат:
fn inc(n: i32) -> i32 {
n + 1
}
fn double(n: i32) -> i32 {
n * 2
}
fn main() {
let res = double(inc(3));
println!("{}", res); // выведет 8
}
Внутренний вызов выполняется раньше внешнего. Тот же порядок можно записать через промежуточную переменную:
fn inc(n: i32) -> i32 {
n + 1
}
fn double(n: i32) -> i32 {
n * 2
}
fn main() {
let mid = inc(3);
let res = double(mid);
println!("{}", res); // выведет 8
}
Функции, конечно же, не обязательно должны быть одинаковыми. Пусть одна прибавляет два, а другая утраивает число:
fn add_two(n: i32) -> i32 {
n + 2
}
fn triple(n: i32) -> i32 {
n * 3
}
fn main() {
let res = triple(add_two(2));
println!("{}", res); // выведет 12
}
Результат двух вызовов можно сложить. Удвоим число 2 и
число 3, затем найдем сумму этих ответов:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let res = func(2) + func(3);
println!("{}", res); // выведет 10
}
Даны блоки в программе:
fn add_two(n: i32) -> i32 {
n + 2
}
fn triple(n: i32) -> i32 {
n * 3
}
В точке входа выведите результат цепочки triple после
add_two для числа 4.
Дано число:
let seed = 1;
Соберите два блока: первый прибавляет 5, второй вычитает
2. Выведите итог для seed одной цепочкой.
Пусть у вас есть функция, возвращающая кубический корень из числа, и функция, округляющая дробь до трех знаков в дробной части:
fn root(num: f64) -> f64 {
num.powf(1.0 / 3.0)
}
fn norm(num: f64) -> f64 {
(num * 1000.0).round() / 1000.0
}
С помощью этих функций найдите кубический корень из числа 2
и округлите его до трех знаков в дробной части.