Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmFnRn 260 of 373 menu
◀ ▶

Возврат значения из функции в 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; }

Скажите, соберется ли такой блок.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить