Perl一行习惯语法
在perl中,两者都是:Perl一行习惯语法,perl,Perl,在perl中,两者都是: if (!$var) { $var = 24 } 以及: 是正确的,当我期待只有第二个工作 哪一种是最惯用的语法?根据我的经验,大多数人都会使用分号,尽管在这种情况下,以下其中一种可能更惯用: $var = 24 if !$var; $var = 24 unless $var; $var ||= 24; (不过,有些人讨厌,除非。) 不是很多,但也有很多,在跨越多行的列表中还包括一个尾随逗号 my @foo = ( "abc def", "ghi jk
if (!$var) { $var = 24 }
以及:
是正确的,当我期待只有第二个工作
哪一种是最惯用的语法?根据我的经验,大多数人都会使用分号,尽管在这种情况下,以下其中一种可能更惯用:
$var = 24 if !$var;
$var = 24 unless $var;
$var ||= 24;
(不过,有些人讨厌,除非。)
不是很多,但也有很多,在跨越多行的列表中还包括一个尾随逗号
my @foo = (
"abc def",
"ghi jkl",
"mno pqr",
);
这减少了添加到列表时更改的行数,并使添加更容易。正如您所注意到的,这两种方法都是正确的。您不需要在块中的最后一条语句结尾使用分号,但这是一种很好的做法
以下是重写if语句的几种方法:
$var = 24 if !$var;
$var = 24 unless $var;
$var ||= 24;
首先,if(!$var){$var=24;}
在带分号或不带分号的单行上不是Perl的惯用用法
正如您所注意到的,分号是不必要的,因为在Perl中,分号是语句分隔符,而不是语句终止符
你的问题标题中有“一句话”,但我不知道这和一句话有什么关系。如果有理由使用完整的If条件块
语法,则不要将其放在一行中。相反:
if (!$var) {
$var = 24;
}
您使用该块可能是因为您可能会在其中添加其他语句。这将使您的差异更干净
另一方面,该语句仅用于设置$var
,当$var
为false或未定义时,则应使用:
$var ||= 24;
因为这是最清晰的意图声明。如果只在未定义时设置$var
,则可以使用:
$var //= 24;
使用5.10及更高版本。来自:
每个简单语句都必须以分号结尾,
除非它是块中的最终语句,否则分号是可选的。
但如果块占用多行,则无论如何都要加上分号,
因为您最终可能会添加另一行
我更喜欢总是添加分号。/=
可能值得在perl 5.10中包含。我在CentOS 6上的perl 5.10上尝试了“/=”和“| |=”,这两种方法都可以正常工作。可能是红帽后端口?请注意| |和/=之间有一个微小的区别。对于$var等于0,$var | |=24将更改$var的值,而$var/=24将不会更改$var的值。
$var //= 24;