<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Ruby 模塊(Module) 模塊(Module)是一種把方法、類和常量組合在一起的方式。模塊(Module)為您提供了兩大好處。 * 模塊提供了一個_命名空間_和避免名字沖突。 * 模塊實現了 _mixin_ 裝置。 模塊(Module)定義了一個命名空間,相當于一個沙箱,在里邊您的方法和常量不會與其他地方的方法常量沖突。 ## 語法 ``` module Identifier statement1 statement2 ........... end ``` 模塊常量命名與類常量命名類似,以大寫字母開頭。方法定義看起來也相似:模塊方法定義與類方法定義類似。 通過類方法,您可以在類方法名稱前面放置模塊名稱和一個點號來調用模塊方法,您可以使用模塊名稱和兩個冒號來引用一個常量。 ## 實例 ``` #!/usr/bin/ruby # 定義在 trig.rb 文件中的模塊 module Trig PI = 3.141592654 def Trig.sin(x) # .. end def Trig.cos(x) # .. end end ``` 我們可以定義多個函數名稱相同但是功能不同的模塊: ``` #!/usr/bin/ruby # 定義在 moral.rb 文件中的模塊 module Moral VERY_BAD = 0 BAD = 1 def Moral.sin(badness) # ... end end ``` 就像類方法,當您在模塊中定義一個方法時,您可以指定在模塊名稱后跟著一個點號,點號后跟著方法名。 ## Ruby _require_ 語句 require 語句類似于 C 和 C++ 中的 include 語句以及 Java 中的 import 語句。如果一個第三方的程序想要使用任何已定義的模塊,則可以簡單地使用 Ruby _require_ 語句來加載模塊文件: ## 語法 ``` require filename ``` 在這里,文件擴展名 **.rb** 不是必需的。 ## 實例 ``` $LOAD_PATH << '.' require 'trig.rb' require 'moral' y = Trig.sin(Trig::PI/4) wrongdoing = Moral.sin(Moral::VERY_BAD) ``` 在這里,我們使用 **$LOAD_PATH &lt;&lt; '.'** 讓 Ruby 知道必須在當前目錄中搜索被引用的文件。如果您不想使用 $LOAD_PATH,那么您可以使用 **require_relative** 來從一個相對目錄引用文件。 **注意:**在這里,文件包含相同的函數名稱。所以,這會在引用調用程序時導致代碼模糊,但是模塊避免了這種代碼模糊,而且我們可以使用模塊的名稱調用適當的函數。 ## Ruby _include_ 語句 您可以在類中嵌入模塊。為了在類中嵌入模塊,您可以在類中使用 _include_ 語句: ## 語法 ``` include modulename ``` 如果模塊是定義在一個單獨的文件中,那么在嵌入模塊之前使用 _require_ 語句引用該文件時必需的。 ## 實例 假設下面的模塊寫在 _support.rb_ 文件中。 ``` module Week FIRST_DAY = "Sunday" def Week.weeks_in_month puts "You have four weeks in a month" end def Week.weeks_in_year puts "You have 52 weeks in a year" end end ``` 現在,您可以在類中引用該模塊,如下所示: ``` #!/usr/bin/ruby $LOAD_PATH << '.' require "support" class Decade include Week no_of_yrs=10 def no_of_months puts Week::FIRST_DAY number=10*12 puts number end end d1=Decade.new puts Week::FIRST_DAY Week.weeks_in_month Week.weeks_in_year d1.no_of_months ``` 這將產生以下結果: ``` Sunday You have four weeks in a month You have 52 weeks in a year Sunday 120 ``` ## Ruby 中的 Mixins 在閱讀本節之前,您需要初步了解面向對象的概念。 當一個類可以從多個父類繼承類的特性時,該類顯示為多重繼承。 Ruby 不直接支持多重繼承,但是 Ruby 的模塊(Module)有另一個神奇的功能。它幾乎消除了多重繼承的需要,提供了一種名為 _mixin_ 的裝置。 Mixins 向您提供了一種完美的為類添加功能的控制方式。但是,它們真正的強大在于當 mixin 中的代碼開始與使用它的類中的代碼交互時。 讓我們看看下面的示例代碼,深入了解 mixin: ``` module A def a1 end def a2 end end module B def b1 end def b2 end end class Sample include A include B def s1 end end samp=Sample.new samp.a1 samp.a2 samp.b1 samp.b2 samp.s1 ``` 模塊 A 由方法 a1 和 a2 組成。模塊 B 由方法 b1 和 b2 組成。類 Sample 包含了模塊 A 和 B。類 Sample 可以訪問所有四個方法,即 a1、a2、b1 和 b2。因此,您可以看到類 Sample 繼承了兩個模塊。因此,您可以說類 Sample 顯示了多重繼承或 _mixin_ 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看