ruby编程下的main 对象

ruby的运行一定要知道当前那个对象在充当self的角色。 只要追踪最后一个方法的接收者就可以。任意时候显示当前self对象,即可查看当前的self对象。 p self

Ruby程序开始运行的时候,Ruby解释器会创建一个名为main的对象作为当前对象。这个对象有时候被称为顶层上下文(top level context), 这个名字的由来是因为你已经处于调用堆栈的顶层,要么还没有调用任何方法,要么调用的所有方法都已经返回。

#默认情况下这种函数的定义,会给main 对象定义一个私有的函数, p private_methods 可以发现test_ansen11 在私有函数的哈希里。

def test_ansen11()

    puts "#{self.inspect}"
    puts "this is in test ansen11"
end

# 这种方式的定义会给main 对象定义一个public的函数,可以通过 p methods,发现test_ansen在共有函数的哈希里。
def self.test_ansen()

    puts "this is in test ansen"
end
 

respond_to? 函数,默认只查找public函数的哈希, 可以通过指定参数include_all为true, 查找private 和 protected函数的哈希。

 # obj.respond_to?(symbol, include_all=false) -> true or false
    # obj.respond_to?(string, include_all=false) -> true or false
    #  
    # Returns +true+ if _obj_ responds to the given method.  Private and
    # protected methods are included in the search only if the optional
    # second parameter evaluates to +true+.

if self.respond_to?(:test_ansen)
    #调用具体的处理函数
    puts "find method test ansen"
    send("test_ansen")
end
puts "#{self.inspect}"

self.send ("test_ansen11")
p methods

 

你可能感兴趣的:(python)