[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