Did you know that you can assign variables inside Ruby’s array and hash literals?
While the values used inside square bracket array literals are typically hard-coded, provided by a variable, computed from an inline expression or generated by a method, any valid Ruby statement can be used. The same is true for both keys and values used in hash literal key => value pairs.
Since a Ruby assignment statement returns the value assigned (e.g. middle = 2 returns 2), these examples have equivalent effect:
middle = 2 list = [1, middle, 3] # list = [1, 2, 3]; middle = 2
list = [1, middle = 2, 3] # list = [1, 2, 3]; middle = 2
Variables set within a literal can be accessed later from within the same literal as well as from outside it:
list = [1, special = 2, special + 1, 4] # list = [1, 2, 3, 4]; special = 2 hash = { key = :one => key.to_s + "'s value", :two => special } # hash = { :one => "one's value", :two => 2 }; key = :one