Самым большим преимуществом =:=
является то, что он возвращает true только для тех же терминов, что и сопоставление с образцом.Таким образом, вы можете быть уверены, что они одинаковы.1
и 1
являются одинаковыми терминами, а 1
с 1.0
- нет.Вот и все.Если вы напишите функции типа foo(A, B) when A =:= B -> A.
и bar(A, B) when A =:= B -> B.
, они будут вести себя одинаково.Если вы используете ==
, это не будут те же функции.Это просто предотвращает удивление.Например, если вы создадите какое-то хранилище ключей / значений, было бы неправильно, если вы сохраняете значение с ключом 1
, а затем получаете это значение, если запрашиваете ключ 1.0
.И да, с ==
немного снижается производительность, но наименьшее удивление гораздо важнее.Просто используйте =:=
и =/=
, если вы хотите сравнить те же термины.Используйте ==
и /=
, только если вы намерены сравнивать числа.