这有什么问题?
class Vec2
attr_accessor :x, :y
# ...
def += (v)
@x += v.x
@y += v.y
return self
end
# ...
end
Run Code Online (Sandbox Code Playgroud)
我在网上找不到太多东西.有人说这是因为在红宝石中+ =完成了调用+然后=,他开玩笑吧?
在有趣的情况下,他是对的,是否有一些解决方法(除了定义一个名为"添加"的方法)?
有人说这是因为在红宝石中+ =完成了调用+然后=,他开玩笑吧?
不,他是对的(除了"calling ="有点不准确,因为=它不是一种方法).
是否有一些解决方法(除了定义一个名为"添加"的方法)?
你的意思是除了定义+和生活+=将改变变量而不是对象的事实?
您可以更改+为变异对象然后返回self,在这种情况下v1 += v2将v1 + v2与对象相同并且会使对象变异.然而,我强烈建议反对,因为没有人会期望+变异(类似大多数红宝石识字的人会期望+=重新分配变量而不是改变对象,所以试图改变它可能完全不可取).
除此之外,不,没有办法解决这个问题.
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |