当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby BasicObject.instance_eval用法及代码示例


本文简要介绍ruby语言中 BasicObject.instance_eval 的用法。

用法

instance_eval(string [, filename [, lineno]] ) → obj
instance_eval {|obj| block } → obj

在接收器 (obj) 的上下文中评估包含 Ruby 源代码或给定块的字符串。为了设置上下文,在代码执行时变量self设置为obj,使代码可以访问obj的实例变量和私有方法。

当给instance_eval 一个块时,obj 也作为块的唯一参数传入。

instance_eval 给出 String 时,可选的第二个和第三个参数提供报告编译错误时使用的文件名和起始行号。

class KlassWithSecret
  def initialize
    @secret = 99
  end
  private
  def the_secret
    "Ssssh! The secret is #{@secret}."
  end
end
k = KlassWithSecret.new
k.instance_eval { @secret }          #=> 99
k.instance_eval { the_secret }       #=> "Ssssh! The secret is 99."
k.instance_eval {|obj| obj == self } #=> true

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 BasicObject.instance_eval。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。