![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Как быстро проверить, есть ли элемент в хеше массивов?
хеш{ключ}(значение1, значение2, значение3) Как сделать быструю проверку, есть ли значение для определенного ключа хеша? |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc List::Util
|
|||
|
||||
| afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: нет Всего: 4 |
defined()
|
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
if ( defined $хеш{ключ} && $элемент ~~ $хеш{ключ} ) {
есть } |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
1) vadiml, не совсем понятно, как здесь работает оператор ~~
2) насколько эта проверка будет работать медленней, чем простой exists() по хешу? (мне нужно быстро проверять) Это сообщение отредактировал(а) Suppir - 28.6.2011, 14:43 |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
1. оператор ~~ проверят наличие элемента в массиве, exists или defined проверяет только наличие ключа в хеше, а есть ли элемент в массиве, который находится в хеше, он узнать не может (оператор появился в perl 5.10)
2. здесь вместо exists лучше использовать defined, т.к. первый проверят есть ключ в хеше, а второй есть ли что-то в хеше под этим ключём: my %h = ( k1 => undef, $k2 => 1); if ( exists $h{k1} ) # будет истина if ( defined $h{k1} ) # будет ложь if ( defined $h{k2} ) # будет истина |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
vadiml, спасибо за разъяснения!
(операторы я учил по 5.8 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |