在perl中:
if (!$var) { $var = 24 }
Run Code Online (Sandbox Code Playgroud)
并且:
if (!$var) { $var = 24; }
Run Code Online (Sandbox Code Playgroud)
是正确的,当我期望只有第二个工作.
哪一个是最习惯的语法?
Sin*_*nür 13
首先,if (!$var) { $var = 24; }在有或没有分号的单行上,在Perl中不是惯用的.
正如您所注意到的,分号不是必需的,因为在Perl中,分号是语句分隔符,而不是语句终止符.
你的问题在标题中有"一线",但我无法弄清楚这与单线有什么关系.如果有理由使用完整if condition block语法,则不要将其放在一行上.代替:
if (!$var) {
$var = 24;
}
Run Code Online (Sandbox Code Playgroud)
据推测,您正在使用该块,因为您可能会在其中添加其他语句.这将使你的差异更清晰.
另一方面,该语句仅用于设置,$var而在$varfalse或undefined 时没有别的,那么你应该使用:
$var ||= 24;
Run Code Online (Sandbox Code Playgroud)
其他方法,因为这是最明确的意图陈述.如果想法仅$var在未定义时设置,则可以使用:
$var //= 24;
Run Code Online (Sandbox Code Playgroud)
与5.10及更高版本.
小智 7
你注意到两者都是正确的.你不需要用分号结束一个块内的最后一个语句,但这是一个好习惯.
以下是重写if语句的几种方法:
$var = 24 if !$var;
$var = 24 unless $var;
$var ||= 24;
Run Code Online (Sandbox Code Playgroud)
根据我的经验,大多数人都包括分号,但在这种情况下,下列之一可能更为惯用:
$var = 24 if !$var;
$var = 24 unless $var;
$var ||= 24;
Run Code Online (Sandbox Code Playgroud)
(但有些人讨厌unless.)
不是很多,但是相当多,还包括跨越多行的列表中的尾随逗号.
my @foo = (
"abc def",
"ghi jkl",
"mno pqr",
);
Run Code Online (Sandbox Code Playgroud)
这会减少添加到列表时更改的行数,并使其更容易实现.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |