当与一般条款一起使用时,在Erlang中==和=:=之间有什么区别?

时间:2012-03-20 16:25:26

标签: erlang

=:=阻止不需要的整数转换之外:

1> 1=:=1.0.
false

=:=与一般条款一起使用有什么好处?

更好的表现?

2 个答案:

答案 0 :(得分:25)

=:=的最大优点是它只能以与模式匹配相同的方式返回相同的术语。所以你可以确定它们是一样的。 11是相同的字词,11.0不是。而已。如果您编写foo(A, B) when A =:= B -> A.bar(A, B) when A =:= B -> B.之类的函数,它们的行为会相同。如果使用==,则功能不同。它只是防止意外。例如,如果您进行某些键/值存储,则使用键1存储值并在请求键1.0时获取此值是不正确的。是的,==会有一点性能损失,但最不惊讶的更重要。如果您打算比较相同的字词,只需使用=:==/=即可。仅在您打算比较数字时才使用==/=

答案 1 :(得分:0)

Eshell V5.9.3.1(以^ G中止)
1 GT; 1.0 == 1。
真正
2 - ; 1.0 =:= 1
。 假
3 GT;

看到了吗? 当使用“==”时,它会将两个元素转换为相同的格式以进行匹配。 当“=:=”没有时,当两个元素是同一类型时,同一个值将返回true。