From: recursive.madman@... Date: 2015-03-04T21:04:51+00:00 Subject: [ruby-core:68415] [Ruby trunk - Feature #10930] Allow splat operator to work for string interpolation Issue #10930 has been updated by Recursive Madman. Matthew Kerwin wrote: > > I'm strongly opposed to it ever arbitrarily injecting commas, especially > since Array#to_s joins without any delimiter. > It doesn't actually: ```ruby 2.2.0 :001 > puts %w(a b c).to_s ["a", "b", "c"] ``` `join` joins without a comma: ```ruby 2.2.0 :002 > puts %w(a b c).join abc ``` Also, I agree with your point. ---------------------------------------- Feature #10930: Allow splat operator to work for string interpolation https://bugs.ruby-lang.org/issues/10930#change-51762 * Author: Daniel P. Clark * Status: Feedback * Priority: Normal * Assignee: ---------------------------------------- Currently when you use the splat operator in a method it pulls the items out of the array for method parameters. ~~~ruby def foo(a,b,c) puts "#{a}, #{b}, #{c}" end bar = [1,2,3] foo(*bar) # => "1, 2, 3" ~~~ So I would expect to be able to do "#{*bar}" and get either "1, 2, 3" or "1,2,3". But when attempting this I get. ~~~ruby baz = [1,2,3] "#{*baz}" # SyntaxError: (irb):53: syntax error, unexpected tSTRING_DEND, expecting '=' # "#{*baz}" # ^ # (irb):53: unterminated string meets end of file "#{*[1,2,3]}" # SyntaxError: (irb):54: syntax error, unexpected tSTRING_DEND, expecting :: or '[' or '.' # "#{*[1,2,3]}" # ^ # (irb):54: unterminated string meets end of file ~~~ This doesn't work on any of the Ruby versions available 1.8 through 2.2.1. They each produce the same error. I propose allowing the splat operator within string interpolation to work the same as [1,2,3].join(',') ~~~ruby fiz = [1,2,3] "#{*fiz}" # => "1,2,3" "#{*[1,2,3]}" # => "1,2,3" ~~~ -- https://bugs.ruby-lang.org/