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

Нет ключа в Rust

Если ключа в карте нет, чтение в квадратных скобках останавливает программу. Такой путь подходит только когда ключ точно записан раньше. Для сомнительного ключа сначала проверяют наличие отдельной командой.

В карте с двумя людьми запросим ключ, который не записывали:

use std::collections::HashMap; fn main() { let mut ages = HashMap::new(); ages.insert("ann", 20); ages.insert("bob", 30); println!("{}", ages["zoe"]); }

Программа не дойдет до конца: обращение к "zoe" считается ошибкой. На экране не появится ноль как «заглушка», в отличие от некоторых других языков.

Тот же исход, если карта еще пустая, а чтение уже пробуют:

use std::collections::HashMap; fn main() { let ages = HashMap::new(); println!("{}", ages["any"]); }

Дана следующая карта:

let mut room = HashMap::new(); room.insert("a", 1);

Попробуйте вывести значение по "b" и скажите, дойдет ли программа до конца.

Дана следующая карта:

let mut tag = HashMap::new(); tag.insert("go", 1);

Сравните чтение по "go" и по "book". Какой ключ безопасен для квадратных скобок?

Почему перед чтением по произвольному ключу лучше сначала узнать, записан ли он?

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