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]