2013/12/23 Nick Knutov <[email protected]>:
>
> Как можно коротко и красиво переписать этот кусок?
> $ha->[$i]->{is_main} and $ha->[$i]->{is_main}==0
По-моему, это условие не имеет смысла:
- если значение 0, то первая часть условия не выполнится;
- если значение истинно, то оно не может быть 0, т.е. вторая часть
не выполнится.
Вот это имеет больше смысла:
$ha->[$i]->{is_main} and $ha->[$i]->{is_main}==1
# или
defined $ha->[$i]->{is_main} and $ha->[$i]->{is_main}==0
# или
exists $ha->[$i]->{is_main} and $ha->[$i]->{is_main}==0
Как вариант, короче можно записать так:
($ha->[$i]->{is_main} // 0) == 1
где 0 --- значение по-умолчанию, если оно имеет место быть;
иначе любое несуществующее значение, что бы избежать предупреждения
"uninitialized".
Последний вариант не рекомендую. Если у вас ситуация все же такая
когда нужно отличать 0, undef и отсутсвие ключа в хеше --- напишите
вспомогательную функцию.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org