Array_block

class Array
  def [](key, &bl)
    self.assoc(key).then {|px|
      bl ? px.nil? ? self << [key, bl] : px << bl : px.drop(1).map(&:call)
    }
  end
end

ar = []

name = 'Carl'
age = 14

ar[:rune] { name }
ar[:rune] { age }

p ar[:rune] # => ["Carl", 14]

name = 'Karl'; age = 12
p ar[:rune] # => ["Karl", 12]