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

如何在Ruby中改进模块方法?

发布时间:2020-12-17 04:28:40 所属栏目:百科 来源:网络整理
导读:你可以改进你的课程 module RefinedString refine String do def to_boolean(text) !!(text =~ /^(true|t|yes|y|1)$/i) end endend 但如何细化模块方法? 这个: module RefinedMath refine Math do def PI 22/7 end endend 引发:TypeError:错误的参数类型
你可以改进你的课程
module RefinedString
  refine String do
    def to_boolean(text)
    !!(text =~ /^(true|t|yes|y|1)$/i)
    end
  end
end

但如何细化模块方法?
这个:

module RefinedMath
  refine Math do
    def PI
      22/7
    end
  end
end

引发:TypeError:错误的参数类型Module(期望的Class)

解决方法

这段代码将起作用:
module Math
  def self.pi
    puts 'original method'
   end
end

module RefinementsInside
  refine Math.singleton_class do
    def pi
      puts 'refined method'
    end
  end
end

module Main
  using RefinementsInside
  Math.pi #=> refined method
end

Math.pi #=> original method

说明:

定义模块#method是equivalent,用于在其#singleton_class上定义实例方法.

(编辑:李大同)

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

    推荐文章
      热点阅读