国产探花免费观看_亚洲丰满少妇自慰呻吟_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是在接受者的單件類中包含模塊的快鍵方式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陵县| 南通市| 轮台县| 阜宁县| 鄄城县| 孝感市| 萨嘎县| 岳西县| 民县| 泰宁县| 涟源市| 田阳县| 长宁县| 马龙县| 大邑县| 邻水| 寿宁县| 舒城县| 双辽市| 东辽县| 郑州市| 定边县| 昭平县| 福泉市| 阜阳市| 宁陕县| 萨迦县| 吉林省| 娄底市| 广德县| 修水县| 泗洪县| 浦城县| 灵宝市| 饶平县| 普陀区| 丹寨县| 珠海市| 子长县| 西峡县| 乳山市|