我不确定如何完成重载<<方法的运算符。这就是我认为它会起作用的方式:
def roles<<(roles)
...
end
然而,这会引发错误。有什么建议吗?
答案 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"