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

Флаги в функциях в Rust

В функциях можно использовать флаги в неявном виде с помощью инструкции return. Давайте посмотрим, как это делается. Пусть у нас есть следующая функция, проверяющая, что все элементы массива положительные числа:

fn is_positive(arr: &[i32]) -> bool { let mut flag = true; for elem in arr { if *elem < 0 { flag = false; } } return flag; } fn main() { }

Давайте перепишем код функции с помощью неявного использования флагов:

fn is_positive(arr: &[i32]) -> bool { for elem in arr { if *elem < 0 { return false; } } return true; } fn main() { }

Как это работает: если в массиве найдется нужный элемент - мы выйдем из функции (и из цикла тоже) с помощью return. Но если в массиве не найдется нужный элемент - выхода из функции не произойдет и выполнение дойдет до команды return true. И получится, что функция вернет true в знак того, что в массиве все элементы положительные.

Сделайте функцию, которая параметром будет принимать массив с числами, и проверять, что все элементы в этом массиве являются четными числами.

Сделайте функцию, которая параметром будет принимать число и проверять, что все цифры этого числа являются нечетными.

Сделайте функцию, которая параметром будет принимать массив и проверять, есть ли в этом массиве два одинаковых элемента подряд.

Функция может отдать логическое значение и без цикла. Конструкцию if, которая возвращает только да или нет, записывают короче. Сначала длинная форма:

fn is_positive(n: i32) -> bool { if n >= 0 { return true; } else { return false; } } fn main() { println!("{}", is_positive(3)); // выведет true }

Сокращенная форма отдает само сравнение. Последнее выражение уже имеет тип bool:

fn is_positive(n: i32) -> bool { n >= 0 } fn main() { println!("{}", is_positive(3)); // выведет true println!("{}", is_positive(-1)); // выведет false }

Дана следующая функция:

fn func(a: i32, b: i32) -> bool { if a == b { return true; } else { return false; } }

Перепишите ее код в сокращенной форме согласно изученной теории.

Дана следующая функция:

fn func(a: i32, b: i32) -> bool { if a != b { return true; } else { return false; } }

Перепишите ее код в сокращенной форме согласно изученной теории.

Дана следующая функция:

fn func(a: i32, b: i32) -> bool { if a + b >= 10 { return true; } else { return false; } }

Перепишите ее код в сокращенной форме согласно изученной теории.

Дана следующая функция:

fn func(num: i32) -> bool { if num >= 0 { return true; } else { return false; } }

Перепишите ее код в сокращенной форме согласно изученной теории.

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