Досрочный выход из функции в 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.
Выведите результат.