www stikers stickers new legal features create characteristics erlang

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.