2009-12-09 46 views

回答

11

这取决于你的意思是“为什么?”。

第一只下降的龟是Perl control structures are defined in terms of BLOCKs,而不是报表(如C)。 Perl中的BLOCK由curlies分隔。

下一个龟将在Larry Wall的感觉,为什么BLOCKs属于那里而不是语句!

+0

第一个答案真的只是似乎乞讨的问题。请再描述第二只乌龟 - 这就是更有趣的答案所在。 –

+0

但是,不要打扰改变这个答案,因为它对提问者来说显然是足够的。相反,请看看我认为应该问的问题:http://stackoverflow.com/questions/1876851/why-do-perl-control-statements-require-braces –

+1

为什么我“麻烦改变这个答案?”我仔细地通过说“为什么?可以解释蚂蚁的几种方法。不,我不是在“乞求这个问题”,因为我没有试图通过隐含地假设它的真相来建立某个命题,这就是“乞讨这个问题”的意思。至于“第二只乌龟”,你必须阅读拉里沃尔的思想,或者找到一些设计决定背后的基本原理的文档,以使用BLOCK而不是控制结构中的语句。 –

3

它们可以是:

$something ? function() : nope(); 

更新:更普遍,这是因为,乔纳森指出,拉里是这么说的。还有其他案件的大括号语法可以抛出:

function() if $something; 

nope() foreach @foo; 

function() while <FH>; 

甚至:

function() and nope() if $something; 
+0

还是使用原来的例子:'()的函数,如果$某事或没了()和0' – mob

+0

这是不完全正确:你的例子中的'function()'和'nope()'不在它自己的范围内。它们的操作范围与整个条件或foreach相同。我想这取决于你如何解释这个问题:他问:“为什么我不能在没有大括号的单独范围内有一行代码”,或者“为什么我不能在一行中只有一个条件”(你回答后者)。 – Ether

1

通常你会使用条件运算符:

的东西吗? function():nope;

1

你的意思是说像something ? function() : nope();

1

因为Perl总是需要花括号括起来 - 这简化了它的语法。

你总是写:

if (something) { function(); } else { nope(); } 

或者使用条件运算符如其他人所说。

1

如果你不需要其他的东西,你可以使用if或if在行尾。

例如:

function() if (something); 

function() unless (something); 
相关问题