你可以改进你的课程
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上定义实例方法.