最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby面向?qū)ο缶幊讨蓄惖姆椒ㄅc類的擴(kuò)展

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

類方法

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

# 法一
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

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

類擴(kuò)展

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

module MyModule
  def my_method; ‘hello'; end
end

class MyClass
  class < self
    include MyModule
  end
end

MyClass.my_method

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

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

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

# 法一: 打開單件類來擴(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” 
#類擴(kuò)展
class MyClass
  extend MyModule
end

MyClass.my_method # => “hello”

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

相關(guān)文章

最新評(píng)論

新邵县| 临泽县| 洞头县| 巴林左旗| 竹溪县| 廊坊市| 辰溪县| 竹溪县| 丽水市| 宾川县| 丰都县| 湘潭县| 扎兰屯市| 天长市| 孟州市| 赤峰市| 景东| 玉田县| 阳信县| 三穗县| 朝阳市| 互助| 铜鼓县| 麦盖提县| 霍城县| 萍乡市| 三亚市| 独山县| 康保县| 九龙县| 扶风县| 阿拉尔市| 威宁| 玉环县| 余庆县| 五台县| 清水县| 秦皇岛市| 深州市| 客服| 策勒县|