相关疑难解决方法(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万
查看次数

使用lambda在单个实例上重新定义单个ruby方法

在Ruby中,有没有办法使用proc重新定义类的特定实例的方法?例如:

class Foo
  def bar()
    return "hello"
  end
end

x = Foo.new
y = Foo.new
Run Code Online (Sandbox Code Playgroud)

(就像是):

y.method(:bar) = lambda { return "goodbye" }

x.bar
y.bar
Run Code Online (Sandbox Code Playgroud)

生产:

hello
goodbye
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby oop

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

标签 统计

ruby ×2

monkeypatching ×1

oop ×1