加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 在模块的上下文中将方法添加到基类

发布时间:2020-12-17 03:47:30 所属栏目:百科 来源:网络整理
导读:我想在 Ruby中为String类添加一个自定义方法.我知道可以使用以下代码完成: class String def my_own_method # impelementation comes here endend 如果我将该代码写入文件中说“string.rb”和其他地方,例如irb,我写需要“string”然后它工作得很好,我可以访
我想在 Ruby中为String类添加一个自定义方法.我知道可以使用以下代码完成:

class String
  def my_own_method
    # impelementation comes here 
  end
end

如果我将该代码写入文件中说“string.rb”和其他地方,例如irb,我写需要“string”然后它工作得很好,我可以访问任何字符串对象上的自定义方法.
但是,当我想将自定义代码打包到这样的模块中时会出现问题:

module A
  class String
    def my_own_method
      # implementation
    end
  end
end

然后,当我包含模块(没有错误)时,我无法访问每个字符串对象上的方法,除非我通过调用s = A :: String.new直接实例化字符串.在这种情况下,我可以访问我的自定义方法,但只能访问不在任何字符串对象上的s变量.我该怎样做才能打包我的util类并自动将它们的方法添加到基类中?任何帮助都非常感谢.

解决方法

一种选择是使用::来确保你抓住顶级的String类:

module A
  class ::String
    def my_own_method
      self.reverse
    end
  end
end

"some string".my_own_method # => "gnirts emos"

我也必须同意塞尔吉奥在答案结束时的观点.不确定是否需要这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读