array_methods/splat_coercion.rb
tests/_examples/array_methods/splat_coercion.rb in the metorex repository.
spreadable = Object.new
def spreadable.to_a
[2, 3, 4]
end
puts([1, *spreadable].inspect)
plain = Object.new
puts([1, *plain].class.to_s)
def collect(*given)
given
end
puts(collect(1, *spreadable).inspect)
letters = ("a".."e").to_a
bounds = [1, 3]
letters[*bounds] = "x"
puts(letters.inspect)
def hands_over(values)
yield(*values)
end
puts(hands_over(nil) { |*taken| taken }.inspect)
puts(hands_over([1, 2]) { |*taken| taken }.inspect)
puts(%W(a\ b\tc).inspect)
puts(%w(a b\ c).inspect)
Output:
[1, 2, 3, 4]
Array
[1, 2, 3, 4]
["a", "x", "e"]
[]
[1, 2]
["a ", "b\tc"]
["a", "b c"]