中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ruby編程API閱讀之Class類

發布時間:2020-06-18 05:29:04 來源:網絡 閱讀:565 作者:wqyzsh 欄目:編程語言

    在Ruby中,所有的class都是對象,是Class這個類的實例。

    一、 類是對象

    當我們編寫一個新的class的時候(一般情況下使用class Name ... end ),我們實際上生成了一個Class類的對象同事將其賦予了一個全局變量(在這里Name就是這個全局變量)。當我們調用Name.new來創建一個新的對象的時候,我們默認地調用了Class中的new方法。我們可以通過覆寫Class類中的new方法來證明這一點:

class Class
   alias oldNew  new
   def new(*args)  
      print "Creating a new ", self.name, "\n"
      oldNew(*args) 
   end
 end

 class Name
 end

 n = Name.new

    執行這段代碼會產生這樣的輸出: Creating a new Name

    二、Class.new do .... end

 fred = Class.new do
  def meth2
    "hello"
  end
  def meth3
    "bye"
  end
 end
  a = fred.new     #=> #<#<Class:0x100381890>:0x100376b98>
  a.meth2          #=> "hello"
  a.meth3          #=> "bye"

   上面代碼中的block實現了跨越ruby作用域門的作用。實際上是對Class類的覆寫,不過顯得更加ruby way。至于這樣的做有什么大用處,我還沒想通,還需要在以后的源代碼閱讀中認真體會。

  三、 私有方法inherited

class Foo
   def self.inherited(subclass)
         puts "New subclass: #{subclass}"
   end
end
class Bar < Foo
end
class Baz < Bar
end

 上面這段代碼會產生下面的輸出:

    New subclass: Bar

    New subclass:  Baz

 這應該也算是ruby元編程的一點點內容吧,類似于included,當Foo類被繼承的時候,子類會自動的向這個私有方法傳遞子類類名并且執行該方法內的代碼。也應該用處。之前在Rails源代碼中遇見過。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

成都市| 赞皇县| 墨玉县| 阿荣旗| 林州市| 泰顺县| 吉隆县| 山东| 芜湖市| 绵阳市| 永福县| 同仁县| 安泽县| 景东| 榆中县| 疏勒县| 永康市| 汽车| 灵山县| 邯郸市| 万山特区| 宝应县| 曲麻莱县| 黑水县| 沈阳市| 纳雍县| 怀宁县| 绿春县| 东阳市| 确山县| 湟源县| 磴口县| 鹤岗市| 淮滨县| 大竹县| 麻栗坡县| 腾冲县| 夏河县| 丽江市| 长沙市| 奉新县|