程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 介紹Ruby中的模塊與混合類型的相關知識

介紹Ruby中的模塊與混合類型的相關知識

編輯:更多關於編程

       這篇文章主要介紹了Ruby中的模塊與混合類型的相關知識,包括平常人們常說的多態與繼承等相關知識點,需要的朋友可以參考下

      模塊是組合在一起的方法,類和常量。模塊兩個主要好處:

      模塊提供了一個命名空間,並避免名稱沖突。

      模塊實現混合工廠。

      模塊定義了一個命名空間,一個沙箱中方法和常量可以自由使用,而不必擔心踩到其他的方法和常數。

      語法:

      ?

    1 2 3 4 5 module Identifier statement1 statement2 ........... end

      就像被命名為類常量模塊中的常量,首字母大寫。定義的方法看起來很相似,模塊定義方法就像類的方法。

      調用一個模塊方法和類方法一樣,通過模塊的名稱它名字前,引用一個常數使用該模塊的名稱和兩個冒號。

      例子:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 #!/usr/bin/ruby   # Module defined in trig.rb file   module Trig PI = 3.141592654 def Trig.sin(x) # .. end def Trig.cos(x) # .. end end

      我們可以定義一個函數名相同,但在不同的功能模塊:

      ?

    1 2 3 4 5 6 7 8 9 10 11 #!/usr/bin/ruby   # Module defined in moral.rb file   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 文件名擴展。

      例如:

      ?

    1 2 3 4 5 require 'trig.rb' require 'moral'   y = Trig.sin(Trig::PI/4) wrongdoing = Moral.sin(Moral::VERY_BAD)

      重要: 在這裡,這兩個文件都包含相同的函數名。因此,這將導致在代碼中的歧義,同時包括在調用程序,但的模塊避免這個代碼模糊,我們能夠調用適當的功能模塊的名稱。

      Ruby include 語句:

      可以嵌入在一個類模塊。要在一個類中嵌入模塊,可以使用類中 include 語句:

      語法:

      include modulename

      如果一個模塊被定義在單獨的文件,那麼它需要包含該文件需要隱藏於公開的模塊在一個類的 require 語句之前。

      例子:

      考慮以下模塊寫在support.rb文件。

      ?

    1 2 3 4 5 6 7 8 9 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

      現在,可以在如下一類包括這個模塊:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/ruby 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

      這將產生以下結果:

      ?

    1 2 3 4 5 Sunday You have four weeks in a month You have 52 weeks in a year Sunday 120

      Ruby中混合類型:

      通過本節之前,假設有面向對象的概念和知識。

      當一個類可以從多個父類繼承的特點,類應該顯示多重繼承。

      Ruby沒有直接中suppoprt多繼承,但Ruby的模塊有另一個精彩使用。他們幾乎消除多重繼承的需要,提供了一個工廠稱為混入。

      混合類型給一個精彩的控制方式增加功能類。在代碼中混合類,使用它的代碼能進行進行交互。

      讓我們來看看下面的示例代碼來獲得混合類型了解:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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。類示例包括兩個模塊A和B類的樣品可以訪問所有四種方法,即a1, a2, b1 或 b2。因此,可以看到這個類繼承自兩個模塊樣品。因此,可以說類的示例顯示了多重繼承或混入。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved