perl - 为什么 Perl 控制语句需要大括号?

标签 perl syntax language-design

这可能看起来像最近提出的问题 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/

相关文章:

与具有成员 char *ptr 的类型混淆;使用的大小_t; size_t 尺寸?

java - 为什么 Java 中没有子类可见性修饰符?

c++ - 为什么编译器需要 `delete [] p` 而不是 `delete p[]` ?

python - 无法在 "object"类的实例上设置属性

linux - 如何从 perl 脚本中注销 ssh session ?

regex - 这个 perl 正则表达式有什么问题?

perl - 如何使用 ModPerl::Registry(mod_perl 处理程序)检测 Perl 中的 Web 脚本是否运行?

mysql - 500 内部服务器错误 perl/数据库

python - 如何从字典中找到最大值?

javascript - 是否有通配符导出为的语法?