BasicObject是ruby中所有类的父类。
一、BasicObject提供的实例方法
BasicObject提供的方法较少,我在文章中只记录一些要点。
1. == 与eql?同为BasicObject提供的实例方法,但用法上稍有不同。
1 == 1.0 #=> true 1.eql? 1.0 #=> false
2. send方法,下面为send方法的例子。
class Klass def hello(*args) "Hello " + args.join(' ') end end k = Klass.new k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
send为ruby中的实例提供了动态调用方法的可能,实在是元编程的利器。
3. instance_eval && instance_exc
这两个方法的作用都是将对象的作用域撕开,将方法后所跟的块的self变成对象的上下文环境。所不同的是instance_exc可以向块内传递参数。
二、 BasicObject提供的私有方法
1. method_missing方法
method_missing方法被用来处理对象调用方法不存在时的情况,如果在对象类中覆写method_missing,那么可以达到意想不到的效果。使用起来较难。
2.singleton_method_added方法
当一个单例方法添加到一个接受者之后,singleton_methdo_added方法会被当作反馈被调用。
module Chatty def Chatty.singleton_method_added(id) puts "Adding #{id.id2name}" end def self.one() end def two() end def Chatty.three() end end ###Adding singleton_method_added ##Adding one Adding three
下面还有singleton_method_removed 和 singleton_method_undefined 方法,和本方法用法相同。我们可以通过示例代码体会一下class << self .... end 的用法。
module Chatty def Chatty.singleton_method_removed(id) puts "Removing #{id.id2name}" end def self.one() end def two() end def Chatty.three() end class << self remove_method :three remove_method :one end end
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站标题:ruby编程API阅读之BasicObject阅读-创新互联
网址分享:https://www.cdcxhl.com/article4/dcsiie.html
成都网站建设公司_创新互联,为您提供企业网站制作、网站导航、网站设计、网站策划、移动网站建设、动态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联