你怎么重载<< Ruby中的运算符?

时间:2009-11-28 21:43:31

标签: ruby-on-rails ruby operators operator-overloading

我不确定如何完成重载<<方法的运算符。这就是我认为它会起作用的方式:

def roles<<(roles)
  ...  
end
然而,这会引发错误。有什么建议吗?

1 个答案:

答案 0 :(得分:9)

你需要在课堂上这样做。像这样:

class Whatever
  attr_accessor :roles
  def initialize
    @roles = []
  end
end

你真的不能拥有<<roles方法。您必须拥有支持roles运营商的<<访问者。

编辑:我已经更新了代码。现在您可以看到<<运算符应该如何重载,但您也可以执行roles<<部分的操作。以下是它的一小部分用法:

w = Whatever.new
w << "overload for object called"
# and overloads for the roles array
w.roles << "first role"
w.roles << "second role"