91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

积石山| 西平县| 阜城县| 墨玉县| 恩施市| 贡嘎县| 吉林省| 东丰县| 木兰县| 鄢陵县| 扎鲁特旗| 阜平县| 红河县| 弋阳县| 彰武县| 金秀| 定南县| 基隆市| 平果县| 大厂| 顺昌县| 福泉市| 滦平县| 涟水县| 孝昌县| 随州市| 松潘县| 武山县| 牙克石市| 克什克腾旗| 吉木萨尔县| 山西省| 铜陵市| 溧水县| 屏东市| 定结县| 蕉岭县| 宁都县| 搜索| 青铜峡市| 焦作市|