在Ruby中使用Refinement覆盖方法时

时间:2017-10-23 11:07:54

标签: ruby

那里。我制作了关于细化与开放类的示例代码。我试着打电话给module RefineString refine String.singleton_class do def length(str) str.length end end end def String.length(*) fail "'String.length' is bad" end using RefineString puts String.length("hello, world") # displays 12 。此脚本在屏幕上输出字符串长度。

为什么精炼会赢得公开课?

module RefineString
  refine String.singleton_class do
    def length(str)
      str.length
    end
  end
end

using RefineString # change sequence

def String.length(*)
  fail "'String.length' is bad"
end

puts String.length("hello, world")

即使我改变顺序,结果也一样。

frame .workArea
pack .workArea

0 个答案:

没有答案