Возврат значения из функции в Rust
Пусть у нас есть функция, которая выводит на экран удвоенное число:
fn show(n: i32) {
println!("{}", n * 2);
}
fn main() {
show(3); // выведет 6
}
Пусть мы хотим не выводить значение на экран, а записать его в переменную. Под результатом понимают то значение, которое попадет в нее, если присвоить вызванную функцию.
Последнее выражение в теле без точки с запятой и есть этот
результат. Тип пишут после ->. Перепишем ее так, чтобы func
отдавала число, а не печатала его:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let res = func(3); // в переменной res теперь 6
}
После того как данные записаны в переменную, их можно вывести на экран:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let res = func(3);
println!("{}", res); // выведет 6
}
А можно сначала изменить эти данные, а затем вывести их на экран:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let mut res = func(3);
res = res + 1;
println!("{}", res); // выведет 7
}
Можно сразу выполнить действие с результатом перед записью в переменную:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let res = func(3) + 1;
println!("{}", res); // выведет 7
}
Можно вызвать функцию несколько раз для разных чисел и сложить ответы:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
let res = func(2) + func(3);
println!("{}", res); // выведет 10
}
Можно не записывать результат в переменную, а сразу вывести его на экран:
fn func(n: i32) -> i32 {
n * 2
}
fn main() {
println!("{}", func(3)); // выведет 6
}
Точка с запятой после последнего выражения делает его командой с
пустым результатом. Тогда тип i32 уже не сходится с телом.
У func точку с запятой в конце не ставят:
fn func(n: i32) -> i32 {
n / 2
}
fn main() {
println!("{}", func(8)); // выведет 4
}
Сделайте функцию, которая параметром принимает число, а возвращает
куб этого числа. С помощью этой функции найдите куб числа 3
и запишите его в переменную res.
С помощью созданной вами функции найдите сумму кубов числа
2 и числа 3 и запишите ее в переменную res.
Дан следующий код:
fn func(n: i32) -> i32 {
n / 2;
}
Скажите, соберется ли такой блок.