ruby – 猴子修补核心课程的替代方案

我还是 Ruby的新手,基本上只是在完成库珀的书之后写下我的第一个微程序.我指出了避免猴子补丁的方向,但问题是我不知道实现相同行为的替代方案.
基本上,我想添加一个可以被每个字符串对象访问的新方法.明显的猴子修补方式是:
class String
  def do_magic
    ...magic...
  end
end

我记得有一种方法使用String.send.但我不记得它是如何完成的,哪里我读.
有人可以指出任何仍然允许我使该方法可用于String类和子对象的替代方法

解决方法

这样做的其他任何方法只是猴子修补的一个更尴尬的语法.有什么方法涉及发送和eval和各种各样的事情,但为什么?继续做明确的方法.

你想要注意大型项目中的猴子补丁,或者当你有依赖关系的时候,因为当几只手都在同一个地方乱七八糟的时候,你可以摆脱冲突.这并不意味着寻找一种完成同样事物的替代语法 – 这意味着在进行可能影响不是您的代码的更改时要小心.这在你的具体情况下可能不是一个问题.这只是在大型项目中可能需要解决的问题.

Ruby中的一个替代方法是可以将方法添加到单个对象.

a = "Hello"
b = "Goodbye"
class <<a
  def to_slang
    "yo"
  end
end
a.to_slang # => "yo"
b.to_slang # NoMethodError: undefined method `to_slang' for "Goodbye":String

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...