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

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -