麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:39:51
字體:
來源:轉載
供稿:網友

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

  •     模塊提供了一個命名空間,并避免名稱沖突。
  •     模塊實現混合工廠。

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

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

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

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

#!/usr/bin/ruby# Module defined in trig.rb filemodule Trig  PI = 3.141592654  def Trig.sin(x)  # ..  end  def Trig.cos(x)  # ..  endend

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

#!/usr/bin/ruby# Module defined in moral.rb filemodule Moral  VERY_BAD = 0  BAD = 1  def Moral.sin(badness)  # ...  endend

和類的方法一樣,當在一個模塊中定義的方法,指定模塊名稱后面跟著一個點,那么該方法的名稱。
Ruby require 語句:

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

require filename

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

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文件。

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"  endend

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

#!/usr/bin/rubyrequire "support"class Decadeinclude Week  no_of_yrs=10  def no_of_months   puts Week::FIRST_DAY   number=10*12   puts number  endendd1=Decade.newputs Week::FIRST_DAYWeek.weeks_in_monthWeek.weeks_in_yeard1.no_of_months

這將產生以下結果:

SundayYou have four weeks in a monthYou have 52 weeks in a yearSunday120

Ruby中混合類型:

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

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

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

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

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

module A  def a1  end  def a2  endendmodule B  def b1  end  def b2  endendclass Sampleinclude Ainclude B  def s1  endendsamp=Sample.newsamp.a1samp.a2samp.b1samp.b2samp.s1

模塊A包括一種方法,a1和a2。模塊B包括一種方法,b1和b2。類示例包括兩個模塊A和B類的樣品可以訪問所有四種方法,即a1, a2, b1 或 b2。因此,可以看到這個類繼承自兩個模塊樣品。因此,可以說類的示例顯示了多重繼承或混入。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲一区在线免费视频 | 欧美另类综合 | 欧美成人免费 | 特片网久久 | 精品久久久一 | 欧美成人免费看 | 国产自在线 | 成av人在线观看 | av中文字幕免费在线观看 | 欧美乱淫 | 四虎久草| 美国av片在线观看 | 天天操综 | 国产精品视频在线观看免费 | 欧美黄成人免费网站大全 | 亚洲无毛av| 久久九九热re6这里有精品 | 免费视频一区 | 欧美成人黄色小视频 | 久久色网站 | 久久福利小视频 | 精精国产xxxx视频在线野外 | 国产做爰 | 久久国产精品系列 | 黄色片网站免费 | 国产成人在线视频 | 青青草成人影视 | 全网免费毛片 | 日本中文高清 | 天天草夜夜 | 欧美日韩高清在线观看 | 国产日本在线播放 | 久章草影院 | 男女羞羞视频 | 中文欧美日韩 | 视频一区 在线 | 免费一级在线观看 | 精国产品一区二区三区四季综 | 一级黄色淫片 | 毛片免费观看日本中文 | 国产免费福利视频 |