From: 7stud -- Date: 2007-09-19T05:11:50+09:00 Subject: Re: Variable / Method Ambiguity David A. Black wrote: > No, because there's no such variable in scope. The second time through > the loop, there's no assignment to a, and the first variable a has > gone out of scope. So the only thing that "a" could mean, outside of > an assignment, is the method a. > That doesn't seem to bear out. If you switch the if statement around so that the assignment happens first: def x print "Function 'x' called\n" 99 end for i in 1..2 if i == 1 x = 10 print "x=", x, "\n" else print "x=", x, "\n" end end the output is: x=10 x=10 The second time through that loop, there is no assignment to x and the previous x has gone out of scope, yet the else clause's use of x does not result in a method call. As p. 329 in pickaxe2 carefully explains, it is a ruby parsing rule that determines what x means. As I read the rule, and as Daniel explains, and as the two examples show(the 'a' example and the 'x' example), the rule is: if there is any code that has x=val on a line before the use of x, then x will be interpreted as a variable. If there is no assignment to x on a line higher in the code, then x will be interpreted as a method call. -- Posted via http://www.ruby-forum.com/.