можно перегрузить оператор << в Ruby? - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу перегрузить оператор << следующим образом: </p>

class A
    attr_accessor :secret_array

...
# assume the array gets initialized at some point
...

    def public_array
        # when it's an rvalue, load it from cache
        load_array_from_cache
    end

    def public_array << (what)
        # but when it's an lvalue, send it to the secret array
        secret_array << what
    end

end

Мой код не работает, очевидно, но возможно ли это, и если да, то какой синтаксис?

Спасибо, Kevin

1 Ответ

0 голосов
/ 01 ноября 2018
class A
  def initialize
    @secret_array = []
  end

  def public_array
    @secret_array
  end

  def <<(what)
    @secret_array << what
    self
  end
end

a = A.new
# => #<A:0x000055e10943df60 @secret_array=[]> 
a << 'q' << 'w' << 'r'
# => #<A:0x000055e10943df60 @secret_array=["q", "w", "r"]> 
a.public_array
# => ["q", "w", "r"] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...