为什么在编程语言中没有“ return if”语句?

时间:2019-04-28 14:12:39

标签: if-statement return 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. 那样内联编写
  3. 效果不佳:if x > y, x gets returned

只是为了清楚起见,我并不是说“传统”方式不好,我只是出于兴趣而问。

如果要使用“ return if”之类的语句,则上面的语句可能如下所示:

return x if (x > y);

这是一句单行,而且读起来不错x gets returned if x > y


现在我问自己以下问题:

  1. 这仅仅是设计决定吗?
  2. return if语法是否会对解析器/编译器造成不必要的复杂性?
  3. 如果不是第一个也不是第二个,那是什么?巧合?在编程的所有十年中,我当然都不会是第一个想到它的人。

修改
由于我的示例显然具有误导性,因此我的意思是使用不同语法的相同行为。

因此,如果x不大于y,return x if(x > y)根本不会返回。

2 个答案:

答案 0 :(得分:1)

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

例如,您可以在Perl中说:

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

这种结构当然可以专门用于

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

因此前提通常是不正确的。在特定情况下,这是因为语言设计师没有看到任何价值。正如一个评论所说,一般的配置是从左到右解析。在我(一种语言设计的业余爱好者)看来,添加这种语法就像增加复杂性而无济于事。

请注意,在结构“ 声明(如果 condition ”)中,声明可以任意复杂,例如{}中包含许多行。这不太可读。

答案 1 :(得分:0)

据我所知,这个问题可以归结为:为什么大多数语法中的条件语句仍然对齐。即:(cond value)代替(value cond)。 后者的论据是,它更自然地遵循自然语言语法。尽管从语法上可能是这种情况,但相反的情况似乎更为自然: 首先要列出必须满足的条件,因为(子树)之后的所有内容甚至都不必进行评估,并且在程序上下文中可以被视为毫无意义。