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

Categories

0 votes
638 views
in Technique[技术] by (71.8m points)

ruby - If `main` is an instance of `Object`, why can't I call it?

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

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

1 Answer

0 votes
by (71.8m points)

"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').


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...