ruby – 猴子修补核心课程的替代方案
发布时间:2020-12-16 22:20:37 所属栏目:百科 来源:网络整理
导读:我还是 Ruby的新手,基本上只是在完成库珀的书之后写下我的第一个微程序.我指出了避免猴子补丁的方向,但问题是我不知道实现相同行为的替代方案. 基本上,我想添加一个可以被每个字符串对象访问的新方法.明显的猴子修补方式是: class String def do_magic ...m
我还是
Ruby的新手,基本上只是在完成库珀的书之后写下我的第一个微程序.我指出了避免猴子补丁的方向,但问题是我不知道实现相同行为的替代方案.
基本上,我想添加一个可以被每个字符串对象访问的新方法.明显的猴子修补方式是: class String def do_magic ...magic... end end 我记得有一种方法使用String.send.但我不记得它是如何完成的,哪里我读. 解决方法
这样做的其他任何方法只是猴子修补的一个更尴尬的语法.有什么方法涉及发送和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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |