Ruby和为Float实例修改self

前端之家收集整理的这篇文章主要介绍了Ruby和为Float实例修改self前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想改变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操作.

所以底线是:你不能在浮点数上写变异方法,至少不是你想要的方式.

猜你在找的Ruby相关文章