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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值