Latest web development tutorials

Moduł Ruby (moduł)

Moduł (Module) jest sposobem metod, klas oraz stałe połączone sposób. Moduł (Module) posiada dwie korzyści.

  • Moduły zapewniająnazwi zapobiec konfliktom nazw.
  • Moduł realizuje urządzeńwstawek.

Module (Moduł) definiuje przestrzeń nazw, odpowiednik piaskownicy, swoje metody i stałe nie są stałe i metody konfliktu w innym miejscu w nim.

Moduł podobnej klasy, ale o innym wyglądzie:

  • Moduły nie może być instancja
  • Moduł Nie podklasy
  • Moduł ten może być określony jedynie przez inny moduł

gramatyka

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

Moduł o nazwie stałe i stałe klasy podobnej nazwie, zaczynając od wielkiej litery. Definicja Metoda wygląda następująco: podobnego podejścia modułowego określenia definicji metody klasy.

Za pomocą metod klasy, można umieścić nazwę modułu i kropkę przed nazwą klasy metody zadzwonić podejście modułowe, można użyć nazwy modułu i dwa dwukropki odwołać się na stałym poziomie.

Przykłady

#!/usr/bin/ruby

# 定义在 trig.rb 文件中的模块

module Trig
   PI = 3.141592654
   def Trig.sin(x)
   # ..
   end
   def Trig.cos(x)
   # ..
   end
end

Możemy zdefiniować wiele funkcji o tej samej nazwie, ale o różnych modułach funkcjonalnych:

#!/usr/bin/ruby

# 定义在 moral.rb 文件中的模块

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

Jak metod klasy, podczas definiowania metody w module, można podać nazwę modułu z kropką po kropka następuje nazwa metody.

Rubywymagają oświadczenie

wymaga stwierdzenie jest podobna do C i C ++, i zawierają instrukcje w instrukcji import Java. Jeżeli program innej chcesz użyć dowolnego z modułów zostały zdefiniowane, można po prostu użyćRubywymagają oświadczenie załadować plik modułu:

gramatyka

require filename

Tutaj, rozszerzenie pliku nie.rb wymagane.

Przykłady

$ LOAD_PATH << '.'

require 'trig.rb'
require 'moralne'

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

Tu używamy$ LOAD_PATH << "." Niech Ruby wiemy, że musimy szukać pliku wskazanej w bieżącym katalogu.Jeśli nie chcesz korzystać z $ LOAD_PATH, można użyćrequire_relative odwołać plik z katalogu względnej.

Uwaga: W tym przypadku plik zawiera tę samą nazwę funkcji.Tak, będzie to prowadzić do zaciemniania, odnosząc się do programu wywołującego, ale moduły uniknąć tego zaciemniania kodu, możemy użyć nazwy modułu, aby wywołać odpowiednią funkcję.

Rubyinclude

Można umieścić moduł w klasie. W celu osadzenia w module klasy, można użyć instrukcjiincludew swojej klasie:

gramatyka

include modulename

Jeśli moduł jest zdefiniowany w osobnym pliku, więc zanim musiał użyć Moduł do wbudowaniawymagająoświadczenia odwołać pliku.

Przykłady

Zakładając następujące moduły napisane wsupport.rbpliku.

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

Teraz można odwołać się do modułu w klasie, co następuje:

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

To daje następujące wyniki:

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

Ruby w wstawek

Przed przeczytaniem tej sekcji, musisz wstępnego rozumienia pojęć obiektowych.

Kiedy klasa może być więcej niż jedna klasa dominująca cecha gdy klasa dziedziczy klasa jest wyświetlany jako wielokrotnego dziedziczenia.

Ruby nie obsługuje bezpośrednio wielokrotne dziedziczenie, ale moduł Ruby (moduł) ma kolejny fantastyczny możliwości. To praktycznie eliminuje konieczność wielokrotnego dziedziczenia, dostarczono urządzeniezwane wstawki.

Ruby nie naprawdę osiągnąć wielokrotny mechanizm dziedziczenia, ale przyjęte jako wstawki technologii jako substytut. Moduły zawierają definicję klasy, podejście modułu mieszać do klasy.

Spójrzmy na następujący kod przykładowy, dogłębne zrozumienie wstawek:

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
  • Moduł składa się z procesu A1 i A2.
  • Moduł B metodą kompozycji B1 i B2.
  • Próbka zawiera moduły klasy A i B.
  • Klasa Próbka może uzyskać dostęp do wszystkich czterech metod, a mianowicie, A1, A2, B1 i B2.
  • Więc widać, że próbka klasa dziedziczy dwa moduły, można powiedzieć, że próbki klasy użyć wielokrotne dziedziczenie lubwstawek.