等于和完全等于术语比较运算符之间的差异解释了这种差异,但还有一个重要问题是:当我不将浮点数与其他事物进行比较时,我应该使用哪个?
“Pragmatic Programming Erlang”推荐 =:= 并说你应该对 == 保持怀疑,并且只在处理浮点数时使用它。但是,它也表示许多现有代码不遵循此规则。
所以我有点进退两难。我是否应该使用“==”(即使不将浮点数与其他值进行比较)以与周围代码保持一致?我是否应该酌情使用“=:=”,即使这与文件的其余部分不一致?我应该将文件中的其他表达式转换为使用“=:=”吗?
有哪些权衡?任何一个操作员都比另一个更有效吗?如果保证其中一个操作数不是数字,那么我使用哪个操作数有关系吗?是否没有隐藏的陷阱(例如,特殊的浮点值,如 NaN、Inf 等 - 如果 Erlang 支持这些)。
顺便说一句,我面临的代码库是 ejabberd。