From: Robert Klemme Date: 2004-08-27T19:40:41+09:00 Subject: Re: Strange behaviour regarding lexical scopes? "Michal" schrieb im Newsbeitrag news:20040827095945.GB26572@box.cz... > Hello, > > today (when explaining bits of Ruby to my friend) > I got confused by this: > > $ cat a.rb > b = 4 > if b == 1 > a = 1 > end > p a > > $ ./a.rb > nil > > $ ruby --version > ruby 1.8.2 (2004-07-29) [i686-linux] > > (latest gentoo ebuild) > > Why is it that 'a' is nil and not undefined? (i would expect: > > undefined local variable or method `a' for main:Object (NameError) > > ) > > Thanks in advance, > M. "if" doesn't introduce a new scope, similar to "switch" in C et. al. So "a" and "b" reside really in the same scope and the definition in the true clause is sufficient to make "a" defined. The assignment need not be executed. Kind regards robert