array_methods/splat_coercion_no_parens.rb

tests/_examples/array_methods/splat_coercion_no_parens.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

words = %W(a\  b\tc)
puts words.inspect
plain_words = %w(a b\ c)
puts plain_words.inspect

Output:

[1, 2, 3, 4]
Array
[1, 2, 3, 4]
["a", "x", "e"]
[]
[1, 2]
["a ", "b\tc"]
["a", "b c"]