这可能看起来像最近提出的问题 why Perl doesn't allow one-liners to be "unblocked,"但我发现这个问题的答案并不令人满意,因为他们要么提到了 the syntax documentation that says that braces are required ,我认为这只是在乞求这个问题,或者忽略了这个问题而只是给出了无支撑的替代方案。
为什么 Perl 要求对 if 和 for 这样的控制语句使用大括号?换句话说,为什么 Perl 需要块而不是语句,就像其他一些流行语言所允许的那样?
最佳答案
一个原因可能是某些样式规定您应该始终使用带有控制结构的大括号,即使是一个衬垫,以避免以后破坏它们,例如:
if (condition)
myObject.doSomething();
else
myObject.doSomethingElse();
然后有人在第一部分添加了更多内容:
if (condition)
myObject.doSomething();
myObject.doSomethingMore(); // Syntax error next line
else
myObject.doSomethingElse();
或者更糟:
if (condition)
myObject.doSomething();
else
myObject.doSomethingElse();
myObject.doSomethingMore(); // Compiles, but not what you wanted.
在 Perl 中,这些类型的错误是不可能的,因为不使用带有控制结构的大括号总是一个语法错误。实际上,已在语言语法级别强制执行样式决定。
这是否是真正原因的任何部分,只有拉里的 mustache 知道。
关于perl - 为什么 Perl 控制语句需要大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1876851/