除非()返回...之间的区别,并返回...除非()

时间:2013-08-22 04:03:11

标签: perl

在Perl中,之间存在任何有意义的区别:

return $result unless ($exist_condition);

unless ($exist_condition) return $result;

2 个答案:

答案 0 :(得分:8)

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

# 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

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

答案 1 :(得分:1)

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

如果更改为:

unless ($exist_condition) { return $result; }

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