Цепные двойные знаки в рубине

Является ли следующее поведение ошибкой или функцией?

class A
  def initialize(**options)
    @options = options
  end

  def foo(**options)
    bar(**@options, **options)
  end

  def bar(**options)
  end

  def print
    puts @options.inspect
  end
end

a = A.new(one: 1)
a.print # {:one=>1}

a.foo(two: 2)
a.print # {:one=>1, :two=>2}

Получено с помощью:

$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

Если особенность, где можно прочитать об этом? Спасибо!

С уважением, Иван

0 ответов

Другие вопросы по тегам