我想改变float实例的自身值.
我有以下方法:
class Float
def round_by(precision)
(self * 10 ** precision).round.to_f / 10 ** precision
end
end
我想添加round_by!将修改自我值的方法.
class Float
def round_by!(precision)
self = self.round_by(precision)
end
end
但我得到一个错误,说我无法改变自我的价值.
任何的想法 ?
你无法改变自我的价值.它总是指向当前对象,你不能指向别的东西.
当您想要改变对象的值时,您可以通过调用其他变异方法或设置或更改实例变量的值来执行此操作,而不是尝试重新分配self.但是在这种情况下,这对你没有帮助,因为Float没有任何变异方法,并且设置实例变量不会给你任何东西,因为任何实例变量都不会影响任何默认的float操作.
所以底线是:你不能在浮点数上写变异方法,至少不是你想要的方式.