Hi -- On Mon, 17 Sep 2007, Summercool Summercool wrote: > the following program for showing Variable / Method Ambiguity > > def a > print "Function 'a' called\n" > 99 > end > > for i in 1..2 > if i == 2 > print "a=", a, "\n" > else > a = 1 > print "a=", a, "\n" > end > end > > will produce the result: > > a=1 > Function 'a' called > a=99 > > (as described in the PickAx2 book, p. 329) > > So at first I thought a Ruby program is interpreted? If interpreted, > then the interpreter will see the "a = 1" at first as treat "a" as a > variable, and then the second time it sees "a", the interpreter should > treat it as a variable again, not as a method. 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. David > So does that mean a > Ruby program is not interpreted but compiled into some bytecode first? > But then, sometimes I run a Ruby program and then it can run all the way > until it see an "undefined local variable"... so that means it probably > is not compiled... or else it would have stopped without running > anything at all. > > So is a Ruby program interpreted or compiled? > -- > Posted via http://www.ruby-forum.com/. > -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)