puts "\n== Testin in MAIN Context =="

local = 'local'
@instance = 'instance'
@@class = 'class'
$global = 'global'

puts "#@instance, #@@class, #$global, #{local}"

begin puts $empty_global == nil   rescue puts "undefined" end
begin puts @empty_instance == nil rescue puts "undefined" end
begin puts empty_local == nil     rescue puts "undefined" end
begin puts @@empty_class == nil   rescue puts "undefined" end


class VarTest
  puts "\n== Testin in Class Context =="

  local = 'local'
  @instance = 'instance'
  @@class = 'class'
  $global = 'global'

  puts "#@instance, #@@class, #$global, #{local}"

  begin puts $empty_global == nil   rescue puts "undefined" end
  begin puts @empty_instance == nil rescue puts "undefined" end
  begin puts empty_local == nil     rescue puts "undefined" end
  begin puts @@empty_class == nil   rescue puts "undefined" end

end
#OUTPUT


== Testin in MAIN Context ==
instance, class, global, local
true
true
undefined
undefined

== Testin in Class Context ==
instance, class, global, local
true
true
undefined
undefined

-

The inconsistency:

become nil, do not raise error:
$empty_global
@empty_instance

are undefined, raise an error:
empty_local
@@empty_class


-

Is this a defect or is there an explanation for this behaviour?

.

--
htttp://lazaridis.com