2012-03-20 94 views

回答

21

=:=的最大優點是它僅以與模式匹配相同的方式對同樣的術語返回true。所以你可以肯定他們是一樣的。 11是相同的術語,11.0不是。而已。如果您編寫像foo(A, B) when A =:= B -> A.bar(A, B) when A =:= B -> B.這樣的功能,它們將表現相同。如果您使用==它不會是相同的功能。它只是防止驚喜。例如,如果您創建了一些鍵/值存儲空間,那麼如果您使用密鑰1存儲值,並且如果要求輸入密鑰1.0則會得到該值。是的,==有一點點性能損失,但最不重要的是驚訝。如果您打算比較相同的術語,只需使用=:==/=。僅當您打算比較數字時才使用==/=

+1

因此,最後,它是關於與浮點數進行比較,不是嗎?如果你有一個帶有整數和浮點數的術語,=:=保證精確的數學。但除了整數和浮點數之外,==和=:=之間沒有任何區別,是?我的意思是,與其他類型==同情是確切的。 – Ricardo 2012-03-21 12:43:04

+0

@Ricardo:這是正確的。 – Fylke 2012-05-07 05:25:59

+2

@Ricardo:是的,沒有。它可以被看作是玩這個詞,但想象這個例子:'A = {foo,[bar,1]},B = {foo,[bar,1.0]},true = A == B,false = A = := B'所以從技術上講,'A'和'B'並不明顯,操作數'=='和'=:=/2'的行爲不一樣,但你說得對,差異就是數字。這就是爲什麼我嚴格講我的答案中的術語。 – 2012-05-11 09:18:08

0

Eshell V5.9.3.1(用^ G中止)
1> 1.0 == 1。
true
2> 1.0 =:= 1。

3>

看到了嗎? 時去「==」將轉院兩個元素插入相同的格式相匹配。 當「=:=」不,當兩個元素是相同類型和相同值將返回true。

相關問題