2

在 Perl 中,以下之间是否有任何有意义的区别:

return $result unless ($exist_condition);

unless ($exist_condition) return $result;
4

2 回答 2

9

第二个是语法错误。我想你的意思是

# unless statement modifier
return $result unless $exist_condition;

# unless statement
unless ($exist_condition) { return $result; }

它们几乎相同。一个区别是unless语句创建了一个范围(实际上是两个),而unless语句修饰符没有。

>perl -E"my $x = 'abc'; unless (my $x = 'xyz') { return; } say $x;"
abc

>perl -E"my $x = 'abc'; return unless my $x = 'xyz'; say $x;"
xyz

在实践中,这可能永远不会出现,所以差异只是风格问题。

于 2013-08-22T05:09:37.420 回答
1

如目前所写,第二个是语法错误。

如果改为:

unless ($exist_condition) { return $result; }

那么没有任何区别。使用在上下文中最有意义的任何一个。

于 2013-08-22T04:10:15.707 回答