【发布时间】:2012-05-21 08:26:25
【问题描述】:
Difference between equal to and exactly equal to term comparison operators 解释了差异,但还有一个重要问题:当我不将浮点数与其他东西进行比较时,我应该使用哪一个?
“Pragmatic Programming Erlang”推荐 =:= 并说你应该对 == 保持怀疑,并且只在处理浮点数时使用它。但是它也说很多现有的代码不遵循这个规则。
所以我有点进退两难。我是否应该使用“==”(即使不将浮点数与其他值进行比较)以与周围的代码保持一致?我是否应该酌情使用“=:=”,即使这与文件的其余部分不一致?我应该将文件中的其他表达式转换为使用“=:=”吗?
什么是权衡?任何一个操作员都比另一个更有效吗?如果保证其中一个操作数不是数字,那么我使用哪一个有关系吗?是否没有隐藏的陷阱(例如,特殊的浮点值,如 NaN、Inf 等。如果 Erlang 支持这些)。
顺便说一句,我面临的代码库是 ejabberd。
【问题讨论】:
标签: performance coding-style erlang