stikers - ¿Cuál es la diferencia entre== y=:=en Erlang cuando se usa con términos en general?
whatsapp new stickers (2)
La mayor ventaja de =:=
es que devuelve verdadero solo para los mismos términos de la misma manera que la coincidencia de patrones. Así que puedes estar seguro de que son iguales. 1
y 1
son los mismos términos y 1
con 1.0
no lo son. Eso es. Si escribes una función como foo(A, B) when A =:= B -> A.
y bar(A, B) when A =:= B -> B.
se comportarán igual. Si usas ==
no serán las mismas funciones. Simplemente evita la sorpresa. Por ejemplo, si realiza un almacenamiento de clave / valor no sería correcto si almacena el valor con la clave 1
y obtiene este valor si solicita la clave 1.0
. Y sí, hay un poco de penalización en el rendimiento con ==
pero menos asombro es mucho más importante. Solo usa =:=
y =/=
cuando tu intención es comparar los mismos términos. Use ==
y /=
solo si es su intención comparar números.
Aparte del hecho de que =:=
evita la conversión de enteros no deseados:
1> 1=:=1.0.
false
¿Cuál es la ventaja de usar =:=
con términos en general?
¿Mejor presentación?
Eshell V5.9.3.1 (abortar con ^ G)
1> 1.0 == 1.
cierto
2> 1.0 =: = 1.
falso
3>
véalo? cuando vaya con "==" transferirá los dos elementos al mismo formato para que coincidan. cuando "=: =" no, cuando los dos elementos son del mismo tipo y el mismo valor devolverá verdadero.