ruby - Using remove_instance_variable vs. set to nil -
consider this
class someclass attr_reader :var def initialize @var = 42 end def delete_var remove_instance_variable(:@var) end def delete_var_2 @var = nil end end what difference between delete_var , delete_var_2?
setting variable nil preserves variable, intended container, changes contained value nil.
removing variable, well, removes it.
in case of instance variables doesn't change much, @ least in example.
reason accessing undefined @instance variable return nil, expected behavior of ruby:
$ irb 2.1.0 :001 > var nameerror: undefined local variable or method `var' main:object (irb):1 /users/tom/.rvm/rubies/ruby-2.1.0/bin/irb:11:in `<main>' 2.1.0 :002 > @var => nil 2.1.0 :003 > however, similarity limited outcome of read operations. in fact, removing variable not same thing setting nil:
$ irb 2.1.0 :001 > 2.1.0 :002 > defined? @var => nil 2.1.0 :003 > @var = nil => nil 2.1.0 :004 > defined? @var => "instance-variable" 2.1.0 :005 >
Comments
Post a Comment