濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)

介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)

熱門標(biāo)簽:百度地圖標(biāo)注自定義圖片 常德電銷平臺(tái)外呼系統(tǒng)軟件價(jià)格 高德地圖標(biāo)注客服 湖州u友防封電銷卡 滴滴外呼系統(tǒng) 電銷機(jī)器人廠商代理 徐州網(wǎng)絡(luò)外呼系統(tǒng)哪個(gè)好 地圖標(biāo)注賺錢項(xiàng)目注冊 白銀外呼paas系統(tǒng)

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

  •     模塊提供了一個(gè)命名空間,并避免名稱沖突。
  •     模塊實(shí)現(xiàn)混合工廠。

模塊定義了一個(gè)命名空間,一個(gè)沙箱中方法和常量可以自由使用,而不必?fù)?dān)心踩到其他的方法和常數(shù)。
語法:

module Identifier
  statement1
  statement2
  ...........
end

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

調(diào)用一個(gè)模塊方法和類方法一樣,通過模塊的名稱它名字前,引用一個(gè)常數(shù)使用該模塊的名稱和兩個(gè)冒號(hào)。
例子:

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

我們可以定義一個(gè)函數(shù)名相同,但在不同的功能模塊:

#!/usr/bin/ruby

# Module defined in moral.rb file

module Moral
  VERY_BAD = 0
  BAD = 1
  def Moral.sin(badness)
  # ...
  end
end

和類的方法一樣,當(dāng)在一個(gè)模塊中定義的方法,指定模塊名稱后面跟著一個(gè)點(diǎn),那么該方法的名稱。
Ruby require 語句:

require 語句聲明的是類似于 C/C++ 的 include語句 和 Java 的 import 語句。如果有第三個(gè)程序要使用任何定義的模塊,它可以簡單地使用Ruby require 語句加載的模塊文件:
語法:

require filename

在這里,它不是必需的  .rb 文件名擴(kuò)展。
例如:

require 'trig.rb'
require 'moral'

y = Trig.sin(Trig::PI/4)
wrongdoing = Moral.sin(Moral::VERY_BAD)

重要: 在這里,這兩個(gè)文件都包含相同的函數(shù)名。因此,這將導(dǎo)致在代碼中的歧義,同時(shí)包括在調(diào)用程序,但的模塊避免這個(gè)代碼模糊,我們能夠調(diào)用適當(dāng)?shù)墓δ苣K的名稱。
Ruby include 語句:

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

include modulename

如果一個(gè)模塊被定義在單獨(dú)的文件,那么它需要包含該文件需要隱藏于公開的模塊在一個(gè)類的 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)在,可以在如下一類包括這個(gè)模塊:

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

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

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

Ruby中混合類型:

通過本節(jié)之前,假設(shè)有面向?qū)ο蟮母拍詈椭R(shí)。

當(dāng)一個(gè)類可以從多個(gè)父類繼承的特點(diǎn),類應(yīng)該顯示多重繼承。

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

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

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

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。類示例包括兩個(gè)模塊A和B類的樣品可以訪問所有四種方法,即a1, a2, b1 或 b2。因此,可以看到這個(gè)類繼承自兩個(gè)模塊樣品。因此,可以說類的示例顯示了多重繼承或混入。

您可能感興趣的文章:
  • Ruby中的block代碼塊學(xué)習(xí)教程
  • 詳解Ruby中的代碼塊對(duì)象Proc
  • Ruby中編寫類與模塊的風(fēng)格指南
  • Ruby中關(guān)于模塊的一些基礎(chǔ)知識(shí)
  • 詳解Ruby中的塊的知識(shí)
  • Ruby中使用SWIG編寫ruby擴(kuò)展模塊實(shí)例
  • 使用Ruby re模塊創(chuàng)建復(fù)雜的正則表達(dá)式
  • ruby 模塊
  • 深入理解Ruby中的代碼塊block特性

標(biāo)簽:荊門 永州 三沙 遼寧 公主嶺 張家界 梧州 普洱

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)》,本文關(guān)鍵詞  介紹,Ruby,中的,模塊,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)》相關(guān)的同類信息!
  • 本頁收集關(guān)于介紹Ruby中的模塊與混合類型的相關(guān)知識(shí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    林州市| 清远市| 沙洋县| 庄浪县| 方正县| 蒙城县| 响水县| 敖汉旗| 久治县| 兰坪| 连平县| 神农架林区| 黄石市| 平顺县| 长岛县| 商城县| 汉阴县| 高密市| 子洲县| 苏尼特右旗| 大新县| 太仆寺旗| 旺苍县| 沙湾县| 徐汇区| 上高县| 酒泉市| 苍溪县| 嘉禾县| 高密市| 会昌县| 田东县| 兖州市| 开化县| 东至县| 枣强县| 重庆市| 宝坻区| 柘荣县| 华蓥市| 伽师县|