当我从数据库表中检索数据时,会填充一个数组。某些字段被定义为小数和货币字段,并且在数组中它们表示为 BigDecimal。
我使用这些数组值来填充 CSV 文件,但问题是所有 BigDecimal 值默认都以科学格式表示(这是 BigDecimal to_s 方法的默认行为)。我可以使用 to_s('F') 显示值,但如何覆盖默认值?
这是建立在 @Farrel 的答案之上的,但不会用无用的方法污染方法命名空间old_xyz
方法。另外,为什么不直接使用默认参数呢?
class BigDecimal
old_to_s = instance_method :to_s
define_method :to_s do |param='F'|
old_to_s.bind(self).(param)
end
end
在 Ruby 1.8 中,这变得有点难看:
class BigDecimal
old_to_s = instance_method :to_s
define_method :to_s do |param|
old_to_s.bind(self).call(param || 'F')
end
end
或者,如果您不喜欢上述代码收到的警告:
class BigDecimal
old_to_s = instance_method :to_s
define_method :to_s do |*param|
old_to_s.bind(self).call(param.first || 'F')
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)