亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

汶上县| 曲沃县| 肇源县| 嘉禾县| 绥中县| 灵璧县| 龙门县| 深水埗区| 始兴县| 安泽县| 林芝县| 河津市| 章丘市| 新源县| 曲沃县| 凯里市| 霍邱县| 满洲里市| 太湖县| 巴彦淖尔市| 房产| 来安县| 绥芬河市| 交口县| 和静县| 兴海县| 保靖县| 亚东县| 新平| 曲阳县| 土默特右旗| 剑河县| 洱源县| 京山县| 荆州市| 嘉禾县| 辰溪县| 凤城市| 南溪县| 灵石县| 凤山县|