一位同事說他聽說過一種沒有「if」概念的語言。那可能嗎?如果是這樣,它是什麼語言?沒有if的語言?
沒有if的語言?
回答
我相信語言必須有做選擇的一些手段,爲了Turing-Complete。但是,這意味着您不必成爲您的經典if語句表單。
也許最熟悉的例子是正則表達式語言。 (a | b *)根據|
的對立面做出決定。不完全是「如果」聲明。
有跡象表明包括陳述的邏輯語言。查詢結果是一個邏輯評估,用於檢查結果是否可以由「已編碼」的規則組來承擔。
看Prolog例如。
除了也許Prolog,我不知道任何特定的語言,但我可以想到幾種方式的語言沒有如果語句可能工作。事實上,你也不需要循環結構。你顯然需要一些條件分支和循環。
如果,例如,你有以下特點:功能,ML風格的模式匹配的函數參數和尾調用優化,你可以沒有如果的或循環進行編程。
foo() {
for (i = 1 to 10) {
if even(i) {
print "even"
}
}
}
將成爲soemthing像
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
當然,你仍然需要普通的比較操作符,然後你可以使用簡單的真/假函數參數模式匹配代替條件。或者你可以匹配任意值。或者語言可以支持guard表達式,這些表達式基本上是用於確定函數過載是否有效的語句。
上面的例子顯然是人爲的,沒有IFS代碼/迴路是很多醜陋,更難比原來的理解,但它演示瞭如何湊合。更多或不同的語言功能可能使得編寫乾淨的程序而不用if/loops成爲可能。
另一種方式是這樣的,如果是真的== 1和虛假== 0
[function(){else-clause}, function(){then-clause}][condition]()
也就是說,存儲真假分支在列表或元組或任何你有一個可以通過true和false索引,然後使用條件的結果作爲索引,查找分支並調用函數。如果您的語言支持宏,則可能會將傳統條件轉換爲此格式。
這個數組的實現讓我大惑不解。 –
Smalltalk中,這被認爲是一個「真正」的面向對象的語言,沒有「如果」的聲明,並沒有「對」的聲明,沒有「而」語句。還有其他的例子(如Haskell),但這是一個很好的例子。 來源:Without ifs
然而,Smalltalk並沒有定義'ifTrue:'和'ifFalse:',以及'whileTrue:'和'whileFalse:' – jer
C++模板編程沒有一個「如果」建設,但通過模板特圖靈完備:
template <int N>
struct Factorial
{
enum { value = N * Factorial<N - 1>::value };
};
template <>
struct Factorial<0>
{
enum { value = 1 };
};
// Factorial<4>::value == 24
// Factorial<0>::value == 1
哇............ – JoelFan
- 1. Javascript語言,PHP if語句
- 2. 如果語句沒有if if
- 3. if語句沒有命中
- 4. IF語句沒有在另一個IF語句中的樹枝
- 5. 沒有語言運行時的基於JVM的語言
- 6. 有沒有完整的元語言?
- 7. 如何從沒有國家的語言獲取語言CultureInfo
- 8. C語言中沒有分號且沒有IF/WHILE/FOR語句的世界你好世界
- 9. Stata編程語言沒有語法?
- 10. MIPS彙編語言if else語句
- 11. 有沒有辦法減少if語句?
- 12. 找到沒有IF語句的匹配?
- 13. 沒有ELSE語句的jQuery inline IF statemenet?
- 14. 嵌套的if語句沒有括號
- 15. Photoshop - 有沒有一種編程語言?
- 16. 有沒有另一種語言像JavaScript?
- 17. 沒有語言標註的主頁
- 18. 沒有fopen的讀文件()(C語言)
- 19. 沒有標準庫的語言引擎
- 20. 沒有框架依賴的Windows語言?
- 21. sqlite3(語言C):沒有這樣的列
- 22. ResourceManager沒有選擇正確的語言
- 23. 沒有OOP語言的Windows編程
- 24. 有沒有關於ARM的彙編語言和GNU彙編語言的書?
- 25. 多語言網站沒有更改語言
- 26. 如果語言沒有語言代碼會怎麼樣?
- 27. if-else語句沒有執行?
- 28. if else語句沒有執行正確
- 29. NGINX重寫沒有IF語句
- 30. 變量沒有被if語句定義
你什麼意思通過'ifs'做?一種語言可能沒有明確的'if'運算符,但是每種語言都必須有一些*從一段代碼分支到另外兩段代碼的方式,否則程序的每個輸入都會給出相同的輸出。 –
我的答案是否提供了您要查找的內容?如果是這樣,請將其標記爲您的問題的答案 – Coops
另請參閱[can-you-write-any-algorithm-without-an-if-statement](http://stackoverflow.com/questions/1937362/can-you- write-any-algorithm-without-an-if-statement) – nawfal