From: 6ftdan@... Date: 2015-03-03T14:41:23+00:00 Subject: [ruby-core:68394] [Ruby trunk - Feature #10930] [Open] Allow splat ooperator to work for string interpolation Issue #10930 has been reported by Daniel P. Clark. ---------------------------------------- Feature #10930: Allow splat ooperator to work for string interpolation https://bugs.ruby-lang.org/issues/10930 * Author: Daniel P. Clark * Status: Open * 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/