From: matz@... Date: 2015-03-04T02:56:55+00:00 Subject: [ruby-core:68401] [Ruby trunk - Feature #10930] [Feedback] Allow splat operator to work for string interpolation Issue #10930 has been updated by Yukihiro Matsumoto. Subject changed from Allow splat ooperator to work for string interpolation to Allow splat operator to work for string interpolation Status changed from Open to Feedback I have no idea why you need this. Does this have common use-case? For me, "#{*[1,2,3]}" to produce "1, 2, 3" is kinda arbitrary. Matz. ---------------------------------------- Feature #10930: Allow splat operator to work for string interpolation https://bugs.ruby-lang.org/issues/10930#change-51751 * 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/