溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ruby編程API閱讀之BasicObject閱讀

發(fā)布時間:2020-07-24 19:29:07 來源:網(wǎng)絡(luò) 閱讀:461 作者:wqyzsh 欄目:編程語言

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中的實例提供了動態(tài)調(diào)用方法的可能,實在是元編程的利器。

        3. instance_eval && instance_exc

           這兩個方法的作用都是將對象的作用域撕開,將方法后所跟的塊的self變成對象的上下文環(huán)境。所不同的是instance_exc可以向塊內(nèi)傳遞參數(shù)。

二、 BasicObject提供的私有方法

        1. method_missing方法

             method_missing方法被用來處理對象調(diào)用方法不存在時的情況,如果在對象類中覆寫method_missing,那么可以達(dá)到意想不到的效果。使用起來較難。

        2.singleton_method_added方法

            當(dāng)一個單例方法添加到一個接受者之后,singleton_methdo_added方法會被當(dāng)作反饋被調(diào)用。            

     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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI