相关疑难解决方法(0)

当猴子修补方法时,你能从新实现调用重写方法吗?

假设我是猴子修补类中的方法,我怎么能从覆盖方法调用重写方法?就像有点像super

例如

class Foo
  def bar()
    "Hello"
  end
end 

class Foo
  def bar()
    super() + " World"
  end
end

>> Foo.new.bar == "Hello World"
Run Code Online (Sandbox Code Playgroud)

ruby monkeypatching

422
推荐指数
2
解决办法
8万
查看次数

为Ruby模块中的每个方法调用执行代码

我正在Ruby 1.9.2中编写一个定义了几个方法的模块.当调用这些方法中的任何一个时,我希望它们中的每一个首先执行某个语句.

module MyModule
  def go_forth
    a re-used statement
    # code particular to this method follows ...
  end

  def and_multiply
    a re-used statement
    # then something completely different ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但我想避免a re-used statement在每个方法中明确地放置该代码.有办法吗?

(如果重要的话,a re-used statement每个方法在调用时都会打印自己的名字.它会通过一些变体来实现puts __method__.)

ruby methods module metaprogramming

37
推荐指数
2
解决办法
2万
查看次数

标签 统计

ruby ×2

metaprogramming ×1

methods ×1

module ×1

monkeypatching ×1