Function if语句可以作为函数调用实现吗?

Function if语句可以作为函数调用实现吗?,function,if-statement,Function,If Statement,我发现在已发布的代码中有一种风格上的“约定”有点令人恼火,那就是使用: if(condition) { 而不是我的偏好: if (condition) { 有一点不同,可能并不重要,但我想到,如果将“if”语句实现为一种函数调用,那么第一种样式可能是合理的。然后我就可以停止反对了 有人知道一种编程语言,其中if语句作为函数调用实现,而参数是单个布尔表达式吗 编辑:我意识到if后面的块是有问题的,我表达问题的方式可能太幼稚了,但到目前为止的答案让我深受鼓舞。它不可能只有一个参数,因为它必须决定

我发现在已发布的代码中有一种风格上的“约定”有点令人恼火,那就是使用:

if(condition) {
而不是我的偏好:

if (condition) {
有一点不同,可能并不重要,但我想到,如果将“if”语句实现为一种函数调用,那么第一种样式可能是合理的。然后我就可以停止反对了

有人知道一种编程语言,其中if语句作为函数调用实现,而参数是单个布尔表达式吗


编辑:我意识到if后面的块是有问题的,我表达问题的方式可能太幼稚了,但到目前为止的答案让我深受鼓舞。

它不可能只有一个参数,因为它必须决定遵循哪条代码路径,而这必须在所述函数之外完成。它至少需要两个参数,但三个参数将允许一个else条件。

Lisp的if与语言中的任何其他宏的语法完全相同它不完全是一个函数,但差别很小:if cond then else


“then”和“else”子句都没有赋值,除非条件选择它们。

我不知道有哪种语言将ifcondition实现为常规函数调用,但Perl实现了try{}catch{}等。。{}作为函数调用。

在Smalltalk中,if语句是一种函数调用——当然是一种完全面向对象的方式,所以它实际上是一种方法,而不是一个自由函数。我不确定这会如何影响您对语法的思考,因为语法完全不同,看起来像:

someBoolean
    ifTrue:  [ do_something ]
    ifFalse: [ do_something_else ]
考虑到这根本不包含任何括号,您可能会将其解释为证明了您想相信的任何东西-

如果If函数是一个常规函数,那么它不能只接受条件,它需要根据条件的计算结果是否为true来运行代码块作为其参数

C++中的函数的原型可能是

的一个字。
void custom_if(bool cond, void (*block)());
此函数可以调用块函数,也可以不调用,具体取决于条件

在一些函数式语言中,事情要容易得多。在Haskell中,一个简单的函数,如:

if' True a _ = a
if' _ _ b = b
允许您编写如下代码:

if' (1 == 1)
  (putStrLn "Here")
  (putStrLn "There")

tcl是一种实现if的语言,它是一种常规的内置函数/命令,具有两个参数;条件和要执行的代码块

如果{$vbl==1}{puts vbl为1}


事实上,tcl for loop、while loop等中的所有语言构造都是作为命令/函数实现的。

是的,我没有将then和else块作为参数,但这只是我思维的一个局限。嗯。。。这里有一个。我原以为我必须放松我对语法的定义。太棒了!我只需要假装我在使用tcl。