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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Ruby相关文章