只要我使用Perl,我就已经知道了三种使用方法if.
if(condition){
"do this";
"do that";
}
Run Code Online (Sandbox Code Playgroud)
"do this" if condition;
Run Code Online (Sandbox Code Playgroud)
condition ? "do this" : "or this";
Run Code Online (Sandbox Code Playgroud)
但是我认为只有在你只执行一个命令时才能使用最后两个.但是最近我了解到,在使用第二个选项时,您可以通过用逗号分隔它们来执行多个命令.
perl -e '$count++, $var="Hello" if 4 < 5; print "COUNT: $count, VAR: $var\n"'
COUNT: 1, VAR: Hello
Run Code Online (Sandbox Code Playgroud)
我意识到用例仅限于此,但它引起了我的兴趣.我试图通过perldoc来查找记录此行为的语法,但是如果用逗号分隔,则无法看到解释可以使用多个命令的任何内容.
这种行为是否特定于以这种方式使用if语句,还是由于Perl的某些其他功能而起作用?如果有人能指出我关于行为的任何文件会很棒.
这种行为是否特定于以这种方式使用if语句,还是由于Perl的某些其他功能而起作用?
不,这不是特定于修复后的if.实际上,每个语句都可以列出几个东西.有时这是有道理的,有时则不然.
print 1, 2;
print(1, 2);
print( (1, 2) );
print( ( (1), (2) ) );
Run Code Online (Sandbox Code Playgroud)
这些都是相同的,因为列表将在Perl中展平.同样,你可以在那里进行函数调用.
foo(), bar();
( foo(), bar() );
Run Code Online (Sandbox Code Playgroud)
关联性并不总是像这里一样清晰,因此在某些情况下使用括号是有意义的.
但是,如果您需要修复后if和块,则应使用块.你真的在标题中回答了你自己的问题.使用do语言构造.
do {
foo();
bar();
} if $condition;
Run Code Online (Sandbox Code Playgroud)
当然,如果你这样做,你也可以使用一个合适的if块.