为什么编程语言中没有"return if"语句?

Why is there no "return if" statement in programming languages?

首先,我想指出,我对编程语言解剖的理论知识没有达到应有的深度,在此先表示歉意。

这也可能是一个愚蠢的问题,对此我深表歉意,但我一直想知道为什么没有 return if 声明或至少是语法糖(至少我的那些我熟悉)编程语言,尤其是像 Python 或 Lua 这样的语言,它们相对高级并且通常允许使用语法糖的替代拼写。

以下面的代码为例:

if(x > y) {
    return x;
}

你当然知道会发生什么,if x > y is true x is returned。 但是,现在可以争论以下问题:

  1. 根据编程语言的不同,一个简单的语句需要几行。 当然你可以像 if (x > y) { return x }
  2. 没"sound"那么好:if x > y, x gets returned

说明一下,我并不是说"traditional"方式不好,我只是出于兴趣才问的。

如果您要使用像 "return if" 这样的语句,上面的语句可能如下所示:

return x if (x > y);

单行本,读起来很好x gets returned if x > y


现在我问自己以下问题:

  1. 这仅仅是一个设计决定吗?
  2. return if 语法是否会导致 parser/compiler 不必要的复杂化?
  3. 如果不是第一个也不是第二个,那是什么?巧合?几十年的编程生涯,我当然不会是第一个想到它的人。

编辑
由于我的示例显然具有误导性,我的意思是具有不同语法的相同行为。

所以如果 x 不大于 y,return x if(x > y) 根本不会 return。

有些编程语言有(我的话)条件后缀。

你可以用 Perl 说,例如:

    print "I don't mind" if 6 == 9

这个构造当然可以专门用于

    return "I don't mind" if 6 == 9

所以一般情况下前提是不成立的。在特定情况下,这是因为语言设计者认为它没有价值。正如一条评论所说,一般的倾向是从左到右的解析。添加这种语法对我(语言设计方面的业余爱好者)来说就像增加复杂性却收效甚微。

注意在构造"statement if condition" then statement可以任意复杂的,例如{ } 中包含许多行。这不太可读。

我理解的问题归结为:为什么条件语句在大多数语法中都是左对齐的。即:(cond value) 而不是 (value cond)。 后者的论点是,它更紧密地遵循自然语言语法。虽然在句法语义上可能是这种情况,但相反的情况似乎更自然: 您首先列出必须满足的条件,因为后面的所有内容(子树)甚至可能都不需要评估,并且在程序的上下文中可以被视为毫无意义。