From: Christopher Dicely Date: 2011-06-20T00:54:02+09:00 Subject: Re: CORE - Inconsistent Handling of Uninitialized Variables On Wed, Jun 15, 2011 at 10:50 AM, Ilias Lazaridis wrote: > > Is this a defect or is there an explanation for this behaviour? Well, I haven't checked the draft ISO standard or RubySpec, but the behavior is certainly widely known and documented in many Ruby books, and lots of code relies on the current behavior, and would break if it were changed. So, I'm going to say its a feature rather than a defect, whether or not it was originally an intended feature. And I suspect that its pretty well thought out with the possible exception of class variable behavior. Globals and locals are often first assigned remotely from the site where they are used, so calling them when they haven't been set isn't really a sign of a logic error -- default to nil makes sense. Local variables are generally (there are some possible exceptions, I think) set directly in the local context where they are used, so using one without it being assigned first is a sign of an error, so not defaulting to nil makes sense. Class variables probably should behave like instance variables, but then, class variables are almost never the right tool to use anyway.