为什么延迟加载整数属性结果与 Integer 实例不匹配

问题描述 投票:0回答:1

我有可能是延迟加载属性的参数值实际上它是从Integer的BatchLoader库获得的。使用 case-expression 时,该值的行为有点奇怪。方便起见,Integer ===(失去比较)运算符的结果是,

[11] pry(ActiveJob::Arguments)> Integer === argument.to_i
=> true
[12] pry(ActiveJob::Arguments)> Integer === argument
=> false
[13] pry(ActiveJob::Arguments)> argument.is_a?(Integer)
=> true
[14] pry(ActiveJob::Arguments)> argument.class.name
=> "Integer"

为什么第二个结果是假的,有没有办法检查参数是从哪里导出的?

ruby
1个回答
0
投票

正如@tadman所描述的,我们的参数变量的方法被批处理加载器库覆盖,并导致比较失败。我们可以通过@tadman的解决方案来检查它。谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.