3 ruby operator-overloading operators
抱歉这个糟糕的头衔,我真的不知道怎么称呼这个.
我在Ruby中有这样的东西:
class Test
def initialize
@my_array = []
end
attr_accessor :my_array
end
test = Test.new
test.my_array << "Hello, World!"
Run Code Online (Sandbox Code Playgroud)
对于@my_array实例变量,我想覆盖<<运算符,以便我可以先处理插入到它的任何内容.我@my_array.<<(value)在课堂上尝试过这种方法,但它没有用.
gle*_*ald 10
我想你正在寻找这个:
class Test
def initialize
@myarray = []
class << @myarray
def <<(val)
puts "adding #{val}" # or whatever it is you want to do first
super(val)
end
end
end
attr_accessor :myarray
end
Run Code Online (Sandbox Code Playgroud)
在理解Ruby Singleton类中有一篇关于这个和相关主题的好文章.