在我的一个模块中,我必须处理无穷大的概念。到目前为止,我一直在使用
9**9**9
但是,如果我的模块的用户决定使用一个大的模块(比如
use bigint;
),然后他们使用
inf
或
Math::BigInt->binf()
代表无限。
在某些地方,这种方法似乎很有效,但在另一些地方,应该是真的或应该是假的比较最终会以错误的方式结束,导致很难找到bug。
但我也担心性能,因为我对无穷的一些比较发生在紧密的内部循环中。显然
中导
从
Math::BigInt
会比
(由于在每个访问上调用绑定或重载方法)。过去有人处理过这个问题吗?如果是,你的解决方案是什么?
use constant INF => if_any_bignum_modules_loaded()
? Math::BigInt->binf
: 9**9**9;
然后在我的模块中添加一个警告:任何bignum模块都应该首先加载。这听起来合理吗?是否有可靠的
if_any_bignum...
在外面,还是我自己滚?