Andrew Grimm
Andrew Grimm

Reputation: 81510

What triggers the Ruby warning about ambiguous first argument?

In Ruby 1.9.1, if you do

$VERBOSE = true
puts /m/ , 42.to_s

or if I do

$VERBOSE = true
puts /m/ , "42"

You get the warning

warning: ambiguous first argument; put parentheses or even spaces

But I don't get it if I do

$VERBOSE = true
puts "m" , 42.to_s

or

$VERBOSE = true
puts(/m/, 42.to_s)

So what specifically triggers this warning? And what more spaces could I have added to the original expression?

Upvotes: 18

Views: 3111

Answers (1)

DigitalRoss
DigitalRoss

Reputation: 146053

The "problem" is that / could signify division or a regular expression. The message is generic; the parser doesn't necessarily mean that spaces would have helped a given specific expression.

Upvotes: 16

Related Questions