欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ruby面向?qū)ο缶幊讨蓄?lèi)的方法與類(lèi)的擴(kuò)展

 更新時(shí)間:2016年06月04日 16:22:20   作者:日拱一卒  
類(lèi)與方法是面向?qū)ο缶幊陶Z(yǔ)言中的典型特性,方法的概念與函數(shù)基本上相同,只不過(guò)類(lèi)方法會(huì)受到類(lèi)作用域的約束,這里我們就簡(jiǎn)單來(lái)看一下Ruby面向?qū)ο缶幊讨蓄?lèi)的方法與類(lèi)的擴(kuò)展

類(lèi)方法

類(lèi)方法其實(shí)質(zhì)是生活在該類(lèi)的單件類(lèi)中的單件方法。其定義方法有三種,分別是:

# 法一
def MyClass.a_class_method; end


# 法二
class MyClass
  def self.anther_class_method; end
end


# 法三*
class MyClass
  class << self
    def yet_another_class_method; end
  end
end

其中第三種方法道出了,類(lèi)方法的實(shí)質(zhì),特別記憶一下!

類(lèi)擴(kuò)展

類(lèi)擴(kuò)展通過(guò)向類(lèi)的單件類(lèi)中添加模塊來(lái)定義類(lèi)方法。

module MyModule
  def my_method; ‘hello'; end
end

class MyClass
  class < self
    include MyModule
  end
end

MyClass.my_method

上面代碼展示了具體類(lèi)擴(kuò)展的實(shí)現(xiàn)方式,將一個(gè)MyModule模塊引入到MyClass類(lèi)的單件類(lèi)中,因?yàn)閙y_method方法是MyClass的單件類(lèi)的一個(gè)實(shí)例方法,這樣,my_method方法也是MyClass的一個(gè)類(lèi)方法。

對(duì)象擴(kuò)展

類(lèi)方法是單件方法的特例,因此可以把類(lèi)擴(kuò)展這種技巧應(yīng)用到任意對(duì)象上,這種技巧即為對(duì)象擴(kuò)展
 

# 法一: 打開(kāi)單件類(lèi)來(lái)擴(kuò)展
module MyModule
  def my_method; ‘hello'; end
end

obj = Object.new
class << obj
  include MyModule
end

obj.my_method  # => “hello”
obj.singleton_methods  # => [:my_method]
# 法二:Object#extend方法
module MyModule
  def my_method; ‘hello'; end
end

obj = Object.new
#對(duì)象擴(kuò)展
obj.extend MyModule
obj.my_method  # => “hello” 
#類(lèi)擴(kuò)展
class MyClass
  extend MyModule
end

MyClass.my_method # => “hello”

Object#extend是在接受者的單件類(lèi)中包含模塊的快鍵方式。

相關(guān)文章

  • Python的Flask框架中SERVER_NAME域名項(xiàng)的配置教程

    Python的Flask框架中SERVER_NAME域名項(xiàng)的配置教程

    SERVER_NAME項(xiàng)在Flask的路由配置中至關(guān)重要,特別是在配置絕對(duì)url和子域名的操作中,這里我們就來(lái)看一下Python的Flask框架中SERVER_NAME項(xiàng)的配置教程:
    2016-06-06
  • Ruby下WebDriver的相關(guān)操作指南

    Ruby下WebDriver的相關(guān)操作指南

    這篇文章主要介紹了Ruby下WebDriver的相關(guān)操作指南,同時(shí)也介紹了啟動(dòng)firefox drive加載firebug擴(kuò)展的方法,需要的朋友可以參考下
    2015-07-07
  • Ruby配置rspec和RestClient來(lái)檢測(cè)服務(wù)器

    Ruby配置rspec和RestClient來(lái)檢測(cè)服務(wù)器

    這篇文章主要介紹了Ruby配置rspec和RestClient來(lái)檢測(cè)服務(wù)器的方法,包括JSON文件的相關(guān)配置,需要的朋友可以參考下
    2015-07-07
  • Ruby 多線(xiàn)程的潛力和弱點(diǎn)分析

    Ruby 多線(xiàn)程的潛力和弱點(diǎn)分析

    這篇文章主要介紹了Ruby 多線(xiàn)程的潛力和弱點(diǎn)分析,本文講解了Ruby 多線(xiàn)程和 IO Block、Ruby GIL 的影響、JRuby 去除了 GIL、Ruby 多線(xiàn)程總結(jié)等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 初步講解Ruby編程中的多線(xiàn)程

    初步講解Ruby編程中的多線(xiàn)程

    這篇文章主要介紹了初步講解Ruby編程中的多線(xiàn)程,線(xiàn)程是各種編程語(yǔ)言學(xué)習(xí)當(dāng)中的重點(diǎn)和難點(diǎn),需要的朋友可以參考下
    2015-04-04
  • ruby的程序結(jié)構(gòu)介紹

    ruby的程序結(jié)構(gòu)介紹

    這篇文章主要介紹了ruby的程序結(jié)構(gòu)介紹,本文講解了源文件、模塊、控制結(jié)構(gòu)、方法定義、類(lèi)及對(duì)象等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開(kāi)發(fā)的示例

    Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開(kāi)發(fā)的示例

    Monkey Patch猴子補(bǔ)丁是指在程序解釋運(yùn)行時(shí)動(dòng)態(tài)添加類(lèi)或模塊的做法,這里我們就來(lái)看一下Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開(kāi)發(fā)的示例
    2016-05-05
  • 詳解Ruby中的代碼塊對(duì)象Proc

    詳解Ruby中的代碼塊對(duì)象Proc

    在Ruby中一個(gè)代碼塊block不是對(duì)象,但可以用Proc來(lái)替代其作為對(duì)象進(jìn)行操作,接下來(lái)我們就來(lái)詳解Ruby中的代碼塊對(duì)象Proc
    2016-05-05
  • Ruby學(xué)習(xí)筆記一

    Ruby學(xué)習(xí)筆記一

    學(xué)習(xí)ruby有段時(shí)間了,記錄下自己的學(xué)習(xí)心得并分享幾個(gè)例子給大家
    2014-07-07
  • Ruby中處理時(shí)間的一些基本操作

    Ruby中處理時(shí)間的一些基本操作

    這篇文章主要介紹了Ruby中處理時(shí)間的一些基本操作,主要是利用到了Ruby中強(qiáng)大的Time模塊,需要的朋友可以參考下
    2015-05-05

最新評(píng)論