首先,我想指出的是,我对编程语言的解剖学的理论知识还不如应有的深,我对此表示歉意。
这也可能是一个愚蠢的问题,对此我深表歉意,但是我一直想知道为什么为什么没有return if
语句或至少没有语法糖(至少我是熟悉的编程语言,尤其是Python或Lua之类的语言,它们是相对高级的语言,通常允许使用语法糖进行替代拼写。
以下面的代码为例:
if(x > y) {
return x;
}
当然,您直接知道会发生什么,if x > y is true x is returned
。
但是,现在可以争论以下问题:
if (x > y) { return x }
if x > y, x gets returned
只是为了清楚起见,我并不是说“传统”方式不好,我只是出于兴趣而问。
如果要使用“ return if”之类的语句,则上面的语句可能如下所示:
return x if (x > y);
这是一句单行,而且读起来不错x gets returned if x > y
现在我问自己以下问题:
return if
语法是否会对解析器/编译器造成不必要的复杂性? 修改:
由于我的示例显然具有误导性,因此我的意思是使用不同语法的相同行为。
因此,如果x不大于y,return x if(x > y)
根本不会返回。
答案 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)。 后者的论据是,它更自然地遵循自然语言语法。尽管从语法上可能是这种情况,但相反的情况似乎更为自然: 首先要列出必须满足的条件,因为(子树)之后的所有内容甚至都不必进行评估,并且在程序上下文中可以被视为毫无意义。