BasicObject是ruby中所有類的父類。
一、BasicObject提供的實(shí)例方法
BasicObject提供的方法較少,我在文章中只記錄一些要點(diǎn)。
1. == 與eql?同為BasicObject提供的實(shí)例方法,但用法上稍有不同。
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中的實(shí)例提供了動(dòng)態(tài)調(diào)用方法的可能,實(shí)在是元編程的利器。
3. instance_eval && instance_exc
這兩個(gè)方法的作用都是將對(duì)象的作用域撕開,將方法后所跟的塊的self變成對(duì)象的上下文環(huán)境。所不同的是instance_exc可以向塊內(nèi)傳遞參數(shù)。
二、 BasicObject提供的私有方法
1. method_missing方法
method_missing方法被用來(lái)處理對(duì)象調(diào)用方法不存在時(shí)的情況,如果在對(duì)象類中覆寫method_missing,那么可以達(dá)到意想不到的效果。使用起來(lái)較難。
2.singleton_method_added方法
當(dāng)一個(gè)單例方法添加到一個(gè)接受者之后,singleton_methdo_added方法會(huì)被當(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 方法,和本方法用法相同。我們可以通過(guò)示例代碼體會(huì)一下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
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:ruby編程API閱讀之BasicObject閱讀-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.chinadenli.net/article4/dcsiie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容