當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。