国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby面向對象編程中類的方法與類的擴展

2020-10-29 19:34:49
字體:
來源:轉載
供稿:網友

類方法

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

# 法一def MyClass.a_class_method; end# 法二class MyClass  def self.anther_class_method; endend# 法三*class MyClass  class << self    def yet_another_class_method; end  endend

其中第三種方法道出了,類方法的實質,特別記憶一下!

類擴展

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

module MyModule  def my_method; ‘hello'; endendclass MyClass  class < self    include MyModule  endendMyClass.my_method

上面代碼展示了具體類擴展的實現方式,將一個MyModule模塊引入到MyClass類的單件類中,因為my_method方法是MyClass的單件類的一個實例方法,這樣,my_method方法也是MyClass的一個類方法。

對象擴展

類方法是單件方法的特例,因此可以把類擴展這種技巧應用到任意對象上,這種技巧即為對象擴展
 

# 法一: 打開單件類來擴展module MyModule  def my_method; ‘hello'; endendobj = Object.newclass << obj  include MyModuleendobj.my_method  # => “hello”obj.singleton_methods  # => [:my_method]# 法二:Object#extend方法module MyModule  def my_method; ‘hello'; endendobj = Object.new#對象擴展obj.extend MyModuleobj.my_method  # => “hello” #類擴展class MyClass  extend MyModuleendMyClass.my_method # => “hello”

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙井市| 丘北县| 金川县| 长泰县| 江都市| 黄浦区| 竹山县| 西安市| 瑞昌市| 射洪县| 揭阳市| 武汉市| 南澳县| 惠安县| 随州市| 金坛市| 叶城县| 天镇县| 汉源县| 遂宁市| 吉林省| 岳阳市| 天台县| 厦门市| 克什克腾旗| 涞水县| 广南县| 兴文县| 抚松县| 福泉市| 九龙坡区| 蒙自县| 慈溪市| 黔南| 陕西省| 静海县| 伊金霍洛旗| 奉新县| 阿尔山市| 儋州市| 溧阳市|