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

Досрочный выход из функции в Rust

После того как выполнится инструкция return, функция закончит свою работу. То есть после выполнения return больше никакой код не выполнится. Слово отдает результат сразу и пропускает оставшиеся строки тела.

Смотрите пример:

fn func(num: i32) -> i32 { return num * num; println!("!"); // этот код никогда не выполнится } fn main() { let res = func(3); println!("{}", res); // выведет 9 }

Это не значит, что в функции должен быть один return. Но выполнится только один из них. Точка с запятой после return обязательна, когда возвращают значение.

В следующем примере в зависимости от параметра выполнится либо первый, либо второй return:

fn func(num: i32) -> &'static str { if num >= 0 { return "+"; } else { return "-"; } } fn main() { println!("{}", func(3)); // выведет '+' println!("{}", func(-3)); // выведет '-' }

Так же выходят раньше последнего выражения. Для отрицательного аргумента func сразу отдает ноль, иначе отдает само число:

fn func(n: i32) -> i32 { if n < 0 { return 0; } n } fn main() { println!("{}", func(-3)); // выведет 0 println!("{}", func(4)); // выведет 4 }

Что выведется на экран в результате выполнения следующего кода:

fn func(num: i32) -> i32 { return num; let res = num * num; res } fn main() { println!("{}", func(3)); }

Объясните почему.

Что выведет каждый из println! в результате выполнения следующего кода:

fn func(num: i32) -> i32 { if num <= 0 { return num.abs(); } else { return num * num; } } fn main() { println!("{}", func(10)); println!("{}", func(-5)); }

Объясните почему.

Что выведет каждый из println! в результате выполнения следующего кода:

fn func(num: i32) -> i32 { if num <= 0 { return num.abs(); } return num * num; } fn main() { println!("{}", func(10)); println!("{}", func(-5)); }

Объясните почему.

Дано число:

let val = 15;

Напишите блок, который через return отдает 0, если val больше 10, иначе отдает само val. Выведите результат.

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