如何在Ruby中评估`main`对象?

Мал*_*евъ -1 ruby eval

如何main在Ruby中了解或评估对象?

例:

$ irb
irb(main):001:0> self
=> main
irb(main):002:0> eval "self"
=> main
irb(main):003:0> eval "main"
NameError: undefined local variable or method `main' for main:Object
        from (irb):3:in `eval'
        from (irb):3:in `eval'
        from (irb):3
    from /home/malo/.rvm/rubies/ruby-1.9.3-p448/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)

主要约束在于,可以从类,模块或实例中的任何位置评估代码字外壳。因此,它将是普遍的。

Far*_*ght 5

要从任何地方访问“主”对象,请使用TOPLEVEL_BINDING

class MyShell
  def main_object
    TOPLEVEL_BINDING.eval('self') #=> "main"
  end
end
Run Code Online (Sandbox Code Playgroud)