在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Ruby/ Ruby 模塊
Ruby 方法
Ruby 語法
Ruby 注釋
Ruby 簡介
Ruby 數(shù)據(jù)庫訪問 - DBI 教程
Ruby 安裝 - Unix
Ruby 數(shù)據(jù)類型
Ruby 異常
Ruby 類案例
Ruby 命令行選項
Ruby CGI Sessions
Ruby 類和對象
Ruby 環(huán)境
Ruby 面向對象
Ruby 變量
Ruby Dir 類和方法
Ruby CGI方法
Ruby 塊
Ruby JSON
Ruby File 類和方法
Ruby 安裝 - Windows
Ruby 判斷
Ruby CGI編程
Ruby 發(fā)送郵件 – SMTP
Ruby XML, XSLT 和 XPath 教程
Ruby 迭代器
Ruby 數(shù)組
Ruby 模塊
Ruby 正則表達式
Ruby CGI Cookies
Ruby Web Services 應用 - SOAP4R
Ruby 循環(huán)
Ruby 多線程
Ruby Socket 編程
Ruby 環(huán)境變量
Ruby 日期 & 時間
Ruby 范圍
Ruby 字符串
Ruby 哈希(Hash)
Ruby 運算符
Ruby 文件的輸入與輸出

Ruby 模塊

模塊(Module)是一種把方法、類和常量組合在一起的方式。模塊(Module)為您提供了兩大好處。

  • 模塊提供了一個_命名空間_和避免名字沖突。
  • 模塊實現(xiàn)了 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

我們可以定義多個函數(shù)名稱相同但是功能不同的模塊:

    #!/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 << '.' 讓 Ruby 知道必須在當前目錄中搜索被引用的文件。如果您不想使用 $LOAD_PATH,那么您可以使用 require_relative 來從一個相對目錄引用文件。

注意:在這里,文件包含相同的函數(shù)名稱。所以,這會在引用調用程序時導致代碼模糊,但是模塊避免了這種代碼模糊,而且我們可以使用模塊的名稱調用適當?shù)暮瘮?shù)。

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

現(xiàn)在,您可以在類中引用該模塊,如下所示:

    #!/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

這將產(chǎn)生以下結果:

    Sunday
    You have four weeks in a month
    You have 52 weeks in a year
    Sunday
    120

Ruby 中的 Mixins

在閱讀本節(jié)之前,您需要初步了解面向對象的概念。

當一個類可以從多個父類繼承類的特性時,該類顯示為多重繼承。

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 。