【发布时间】:2019-09-17 08:31:24
【问题描述】:
首先,我要指出,我对编程语言解剖的理论知识并没有达到应有的深度,在此先道歉。
这也可能是一个愚蠢的问题,对此我深表歉意,但我一直想知道为什么没有 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) 根本不会返回。
【问题讨论】:
-
编程语言实现强烈偏向于自上而下、从左到右的评估(如英语)。您建议将
x>y放置在return x之后会与该纹理相悖。编程语言没有理由不能对if语句实现这种方法,但我怀疑编译器会发出指令来首先评估条件,然后是跳转。 -
有些语言(例如 Perl)有条件后缀,允许 '
if ' 但总的来说似乎没什么意义。您可能更喜欢说“如果条件做某事”,但其他人更喜欢说“如果条件做某事”。重要的是它完全可以说;两种情况下发出的代码都是相同的。 -
这会使编程和代码审查变得更加烦人,因为 if 块可能非常大,而且我不喜欢先阅读代码才发现代码最后没有正确执行。如果我可以先阅读条件,那么我知道我可以跳过阅读接下来执行的代码。此外,首先有条件是尊重执行顺序,这在阅读代码时对我来说更符合逻辑。我认为扭转这种情况没有任何好处。
标签: if-statement return programming-languages