小智 6
除了Prolog,我不知道任何特定的语言,但我可以想到一些没有if语句的语言可能有用的方法.实际上,您也不需要循环结构.你显然需要一些条件分支和循环方式.
例如,如果您具有以下功能:函数,函数参数上的ML样式模式匹配和尾调用优化,则可以不使用if或循环进行编程.
foo () {
for (i = 1 to 10) {
if even(i) {
print "even"
}
}
}
Run Code Online (Sandbox Code Playgroud)
会变得如此像
print_if_true (true) {
print "even"
}
print_if_true (false) {}
foo_loop (11) {
}
foo_loop (n) {
print_if_true(even(n))
foo_loop(n+1)
}
foo () {
foo_loop(1)
}
Run Code Online (Sandbox Code Playgroud)
或者使用类似ML的语法:
foo =>
let loop 11 => 0
n => p_i_t(n), loop n + 1
and p_i_t true => print "even"
_ => unit
in
loop 1
end
Run Code Online (Sandbox Code Playgroud)
当然,您仍然需要通常的比较运算符,然后您可以使用简单的true/false函数参数模式匹配而不是条件.或者你可以匹配任意值.或者语言可以支持保护表达式,这些表达式基本上是判断函数重载是否有效的语句.
上面的例子显然是做作的,没有ifs/loops的代码比原版更加丑陋和难以理解,但它演示了如何做到.更多或不同的语言功能可以在没有if/loops的情况下编写干净的程序.
另一种方式是这样的,如果是真== 1和假= = 0.
[function(){else-clause}, function(){then-clause}][condition]()
Run Code Online (Sandbox Code Playgroud)
也就是说,将true和false分支存储在列表或元组或任何可以通过true和false索引的内容中,然后使用条件的结果作为索引,查找分支并调用函数.如果您的语言支持宏,则可能将传统条件转换为此格式.