[Moscow.pm] (без темы)
Ruslan Zakirov
ruz на bestpractical.com
Чт Ноя 17 03:18:59 PST 2011
2011/11/17 Sergiy Borodych <sergiy.borodych на gmail.com>:
>> Return failure with bare return instead of return undef. - это просто
>> кладезь для багов в ОО программах с именоваными переменными, не нужно
>> нам таких проблем
>
> В приведеном мною выше интерью Джефри розказывает про этот момент и
> обьяcняет почему.
> Кратко - в зависимости от вызваного контекста список с (undef) вернет тру.
>
Многие не поняли мой комментарий.
sub method {
return undef if $self->something_wrong;
return $res_that_during_success_is_scalar;
}
sub second_method {
my ($self, %args) = @_
print Dumper \%args;
}
$obj->second_method(
argument => $obj->method,
another => 'value',
);
Так что политика просто ошибочна. Если ей следовать, то придется
вызывать все такие методы/функции в явном скалярном контексте.
Эту политику можно модифицировать в что-то более правильное.
1) если функция возвращает хотя бы один список, то нужно писать return;
2) иначе undef вполне нормально
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm