也许除了 Prolog 之外,我不知道任何特定的语言,但我可以想到一种没有语言的语言的几种方法if 语句可能有效。事实上,您也不需要循环构造。显然,您需要某种条件分支和循环的方式。
例如,如果您具有以下特征:功能, 函数参数的 ML 风格模式匹配 and 尾调用优化,您可以在没有 if 或循环的情况下进行编程。
foo () {
for (i = 1 to 10) {
if even(i) {
print "even"
}
}
}
会变成类似的东西
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)
}
或者使用类似 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
当然,您仍然需要常用的比较运算符,然后您可以使用简单的 true/false 函数参数模式匹配而不是条件。或者您可以匹配任意值。或者该语言可以支持保护表达式,这些表达式基本上是确定函数重载是否有效的 if 语句。
上面的例子显然是人为的,没有 ifs/loops 的代码比原来的代码更难看、更难理解,但它演示了如何凑合。更多或不同的语言功能可能使编写没有 if/循环的干净程序成为可能。
另一种方法是这样的,如果 true == 1 且 false == 0。
[function(){else-clause}, function(){then-clause}][condition]()
也就是说,将 true 和 false 分支存储在列表或元组或任何可以通过 true 和 false 索引的内容中,然后使用条件的结果作为索引,查找分支并调用函数。如果您的语言支持宏,则可以将传统条件翻译成这种格式。