Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

When I type self, I get a return value main. I made this test:

main2 = Object.new

Then I can call main2, and it returns something, but when I call main, it raises an undefined variable error. How does this happen?

Here's the assumption I found in other site about how this top level environment works:

class Object  
  Object.new.instance_eval do  
    def self.to_s  
      "main"  
    end  
   private  
    ##  
    # Your program gets inserted here...  
    ##  

  end  
end 

It makes sense to me.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
620 views
Welcome To Ask or Share your Answers For Others

1 Answer

"What is the Ruby Top-Level?" is an article on the Ruby top level that explains everything you need to know.

As an aside however, you can access main anywhere in your program by using TOPLEVEL_BINDING.eval('self').


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...