возвратный вопрос - PullRequest
       8

возвратный вопрос

1 голос
/ 09 ноября 2010
sub routine1 { 
    return wantarray ? () : undef;
}

sub routine2 { 
    return;
}

Есть ли разница между этими двумя подпрограммами?

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010

номер

С perldoc -f возврат :

Если EXPR не указан, возвращает пустой список в контексте списка, неопределенный значение в скалярном контексте, и (из конечно) ничего в пустоте контекст.

0 голосов
/ 09 ноября 2010

На самом деле, есть разница ...

Взгляните на эту ссылку от Perl Critic .

Возвращение undef при неудаче от Подпрограмма довольно распространена. Но если подпрограмма вызывается в списке контекст, явный возврат undef; оператор вернет одноэлементный список, содержащий (undef). Теперь, если это список впоследствии помещается в логическое значение контекст для проверки на неудачу, то это оценивает как истинное. Но вы наверное хотел, чтобы это было ложным.

Это тонко, но может быть проблемой.

...