我发现代码中发现的一种风格“惯例”是使用:
if(condition) {
而不是(我的偏好):
if (condition) {
略有不同,可能是一个不重要的区别,但我发现如果'if'语句被实现为一种函数调用,第一种样式可能是合理的。然后我可以停止反对它。
有没有人知道一种编程语言,其中if语句是作为函数调用实现的,其中参数是一个布尔表达式?
编辑:我意识到if()之后的块是有问题的,我表达问题的方式可能太天真了,但到目前为止,我对这些答案感到鼓舞。答案 0 :(得分:1)
它不可能有一个单个参数,因为它必须决定要遵循哪个代码路径,这必须在所述函数之外完成。它至少需要两个参数,但是三个允许“其他”条件。
答案 1 :(得分:1)
Lisp的if语法与语言中的任何其他宏完全相同(它不完全是一个函数,但差别很小):(if cond then else)
除非条件选择它们,否则'then'和'else'子句都将被取消评估。
答案 2 :(得分:1)
在Smalltalk中,if语句是一种函数调用 - 当然是一种完全面向对象的方式,所以它实际上是一种方法而不是自由函数。我不确定它会如何影响你对语法的思考,因为语法完全不同,看起来像:
someBoolean
ifTrue: [ do_something ]
ifFalse: [ do_something_else ]
鉴于这根本不包含任何括号,您可以将其解释为证明您想要相信的任何内容。 : - )
答案 3 :(得分:1)
如果if
函数是常规函数,那么它不能只取条件,它需要作为参数运行代码块,具体取决于条件是否计算为真。
像C ++中的函数原型可能是
的原因void custom_if(bool cond, void (*block)());
此函数可以调用块函数,也可以不调用,具体取决于cond。
在某些功能语言中,事情要容易得多。在Haskell中,一个简单的函数,如:
if' True a _ = a
if' _ _ b = b
允许您编写如下代码:
if' (1 == 1)
(putStrLn "Here")
(putStrLn "There")
总会在这里打印。
答案 4 :(得分:1)
tcl是一种语言,它将if
作为常规函数/命令实现,它带有两个参数;条件和要执行的代码块
if {$vbl == 1} { puts "vbl is one" }
http://tmml.sourceforge.net/doc/tcl/if.html
实际上,tcl中的所有语言结构(for循环,while循环等)都是作为命令/函数实现的。
答案 5 :(得分:0)
我不知道if(condition)作为常规函数调用实现的任何语言,但Perl实现了try {} catch {}等.. {}作为函数调用。