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

问题描述 投票:-1回答:1

首先,我想指出,我对编程语言解剖学的理论知识并没有达到应有的深度,我提前道歉。

这也可能是一个愚蠢的问题,我为此道歉,但我一直想知道为什么没有return if语句或至少语法糖(至少是我熟悉的)编程语言,特别是在像Python或Lua这样的语言中,这些语言相对较高,并且通常允许使用语法糖进行替代拼写。

请使用以下代码,例如:

if(x > y) {
    return x;
}

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

  1. 根据编程语言,简单语句需要几行。当然你可以像if (x > y) { return x }一样内联编写
  2. 它听起来不那么棒: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)根本不会返回。

if-statement return programming-languages
1个回答
1
投票

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

你可以在Perl中说,例如:

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

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

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

所以前提是一般的。在特殊情况下,这是因为语言设计师没有看到任何价值。正如一条评论所说,一般的倾向是从左到右的解析。添加这种语法看起来对我来说(仅仅是语言设计中的业余爱好者)就像增加复杂性一样没什么好处。

注意,在构造“语句if condition”中,语句可以是任意复杂的,例如许多行包含在{}中。这不太可读。