instance-eval

    1熱度

    2回答

    我想打電話給instance_eval這個類: class A attr_reader :att end 通過這個方法b: class B def b(*args) att end end ,但這種情況正在發生: a = A.new bb = B.new a.instance_eval(&bb.method(:b)) # NameError:

    5熱度

    2回答

    我知道發送帶有參數的字符串或符號,而instance_eval帶有字符串或塊,並且它們的差異在給定接收者時可能是明顯的。 我的問題是'下引擎蓋'的區別在於下面的例子嗎? 1234.send 'to_s' # '1234' 1234.instance_eval 'to_s' # '1234'

    5熱度

    4回答

    我瞭解instance_eval和class_eval之間的基本區別。我發現雖然玩耍時有些奇怪,但涉及attr_accessor。這裏有一個例子: A = Class.new A.class_eval{ attr_accessor :x } a = A.new a.x = "x" a.x => "x" # ... expected A.instance_eval{ attr_acc

    0熱度

    1回答

    有誰知道是什麼原因導致了這個錯誤?我正在嘗試製作基本的機架應用程序。 App.rb => class Cherry class << self def app &block Cherry::Application.new &block end end class Application def initialize

    3熱度

    5回答

    如果我有一個類: class KlassWithSecret def initialize @secret = 99 end end 並運行: puts KlassWithSecret.new.instance_eval { @secret } 它打印99,但是如果我跑: puts KlassWithSecret.new.instance_eval do

    0熱度

    1回答

    我遇到了與instance_eval和模塊包含有關的問題。 請看看下面的代碼: module B class C def initialize puts 'This is C' end end def hello puts 'hello' end end class A include B

    2熱度

    1回答

    我發現傳遞給class_eval,module_eval和instance_eval的line_number與錯誤報告的行號不匹配。 任選的第二和第三個參數提供該所報告編譯錯誤時所使用的文件名和 起始行號(使用instance_eval作爲例子):此行爲不是由ruby-doc它說說明。 所有這三種方法class_eval,module_eval和instance_eval接受兩個額外的PARAMS

    0熱度

    3回答

    在我開始之前,我嘗試過使用instance_eval和singleton方法無濟於事。我將在這個問題上提出我的「最佳」嘗試。 我努力做到以下幾點: value = rule(condition: lambda {@something > 100}) value.act(120) 以上調用不能改變。 什麼可以改變的規則是如何定義的: def rule(condition: nil)

    1熱度

    2回答

    我的紅寶石DSL的用戶希望能夠添加額外的方法和任意塊的上下文中調用它們,例如: def do_something override 'flags', 'ABC' end project('XXX') do configuration('debug') do do_something end end 在這個示例'override'是一個用ins

    7熱度

    2回答

    class_eval & instance_eval除def以外的工作方式有什麼區別嗎?內部class_evaldef塊定義方法的類本身(即實例方法)和內部instance_evaldef定義方法的類(即類方法)的eigenclass。 AFAIK所有其它特徵在兩種情況下(例如define_method,attr_accessor,class << self; end,定義常量)相同方式工作。這是