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