РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
583 of 1245 menu

Метод filter

Метод filter проверяет значение, содержащееся в варианте Some, с помощью переданной функции-предиката. Если предикат возвращает true, метод возвращает исходный Some со значением. Если предикат возвращает false, метод возвращает None. Если исходный Option равен None, метод также возвращает None. Параметром метод принимает замыкание, которое получает ссылку на значение и возвращает булево значение.

Метод не изменяет исходный Option, а возвращает новый. Это позволяет удобно объединять проверку условия и обработку отсутствующего значения в одной цепочке вызовов.

Синтаксис

Option::filter(self, predicate)

Здесь self - это Option, для которого вызывается метод, а predicate - замыкание, принимающее ссылку на значение и возвращающее bool.

Пример

Давайте проверим, что значение внутри Some больше нуля:

fn main() { let opt = Some(5); let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

Результат выполнения кода:

Some(5)

Пример

Давайте проверим, что значение внутри Some больше нуля, когда значение отрицательное:

fn main() { let opt = Some(-3); let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

Результат выполнения кода:

None

Пример

Давайте применим filter к значению None:

fn main() { let opt: Option<i32> = None; let res = opt.filter(|&x| x > 0); println!("{:?}", res); }

Результат выполнения кода:

None

Пример

Давайте используем filter вместе с map для проверки строки на длину:

fn main() { let opt = Some("abcde"); let res = opt.filter(|s| s.len() == 5); println!("{:?}", res); }

Результат выполнения кода:

Some("abcde")

Смотрите также

  • класс Option,
    который представляет необязательное значение
  • метод map,
    который преобразует значение внутри Some
  • метод and_then,
    который применяет функцию, возвращающую Option
  • метод is_some,
    который проверяет, содержит ли Option значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить