[RAILS] Erste Schritte mit Ruby-Modulen

Erste Schritte mit Ruby-Modulen

Es ist ein Modul, das eine Funktion von Ruby ist, aber ich denke, dass es einer der Teile ist, die für diejenigen, die Ruby noch nicht kennen, schwer zu verstehen sind.

Also werde ich diesmal die Module zusammenfassen.

Modulfunktion

● Einmischen (einschließen und erweitern) ● Erstellen eines Namespace ● Funktionen und Methoden bereitstellen

Es gibt andere Funktionen, aber ich habe drei Hauptfunktionen aufgelistet. Heute möchte ich mir diese ansehen.

Mischen

Ich weiß nicht, was es heißt, ein Mix-In zu sein. Eine Mehrfachvererbung kann durchgeführt werden, indem das Modul in die Klasse aufgenommen wird. In Ruby ist nur eine einzelne Vererbung der Klasse möglich, das Modul kann jedoch eine Mehrfachvererbung sein. Im Gegensatz zur Klasse kann dieselbe Funktion auch dann gemeinsam genutzt werden, wenn sie nicht mit is-a zusammenhängt (eine Beziehung, in der ein bestimmtes Objekt "eine Instanz einer bestimmten Klasse oder ihrer untergeordneten Klasse" ist).

Nachtrag: Die Erklärung der is-a-Beziehung wurde korrigiert. Danke für deinen Kommentar.

include

ruby.rb


module Hoge
  def hello
    puts 'Hello'
  end
end

module Bar
  def bye
    puts 'Bye'
  end
end

class Greet
  #Fügen Sie das oben erstellte Modul hinzu
  include Hoge
  include Bar
end

greet = Greet.new
greet.hello #=> "Hello"
greet.bye   #=> "Bye"

Durch Einfügen wie oben kann die Klasse die im Modul definierten Methoden verwenden. Das Hinzufügen von Funktionen durch Einfügen von Modulen in eine Klasse auf diese Weise wird als Mix-In bezeichnet.

extend Mit expand können Sie eine Methode in einem Modul in eine Klassenmethode umwandeln.

ruby.rb


module Hoge
  def hello
    puts 'Hello'
  end
end

class Greet
  #Erweitern Sie das oben erstellte Modul
  extend Hoge
end

#Sie können Hallo als Klassenmethode aufrufen
Greet.hello #=> "Hello"

Sie können die im Modul definierten Methoden verwenden, um die Klasse wie folgt einzuschließen oder zu erweitern. Es ist ein Mix-In, das eine der Möglichkeiten ist, das Modul zu verwenden.

Bereitstellung eines Namespace

Wenn Sie eine Klasse in den Modulnamen schreiben, bedeutet dies eine Klasse, die zum Modul gehört. Sie können Namenskonflikte verhindern.

module Bar
  class Baz
    def self.foo
      puts 'foo'
    end
  end
end

#Ich habe die foo-Methode aus der Baz-Klasse aufgerufen, die zum Modul Bar gehört.
Bar::Baz.foo #=> "foo"

Was ich fühlte, nachdem ich als Ingenieur gearbeitet hatte Es gibt viele Möglichkeiten, Namespaces zu verwenden. Denn je größer das Projekt, desto größer ist das Risiko von Namenskonflikten. Wir setzen häufig Namespaces auf diese Weise, um Konflikte zu vermeiden.

Funktionen und Methoden definieren

Konstante

Die im Modul definierten Konstanten können über den Modulnamen aufgerufen werden.

ruby.rb


module Hoge
  Year = "2020"
end

Hoge::Year #=> "2020"

Methode

Instanzmethoden können aufgerufen werden, indem die Methode module_function verwendet und die Methode in eine Modulfunktion umgewandelt wird.

ruby.rb


module Hoge
  def hello
    puts 'Hello'
  end

  module_function :hello
end

Hoge.hello #=> "Hello"

Damit ist die Zusammenfassung der Module abgeschlossen. Heute war der 10. Tag der Serialisierung eines Ingenieurs, der 100 Tage später ein vollwertiger Ingenieur wird.

** 90 Tage, um ein vollwertiger Ingenieur zu werden **

Recommended Posts

Erste Schritte mit Ruby-Modulen
Erste Schritte mit Ruby
Erste Schritte mit DBUnit
Erste Schritte mit Swift
Erste Schritte mit Doma-Transaktionen
Erste Schritte mit der Verarbeitung von Doma-Annotationen
Erste Schritte mit Java Collection
Erste Schritte mit JSP & Servlet
Erste Schritte mit Java Basics
Erste Schritte mit Spring Boot
Erste Schritte mit Java_Kapitel 5_Praktische Übungen 5_4
[Google Cloud] Erste Schritte mit Docker
Erste Schritte mit Docker mit VS-Code
Erste Schritte mit dem Doma-Criteria API Cheet Sheet
Ich habe Ruby gestartet
Erste Schritte mit Docker für Mac (Installation)
Einführung in den Parametrisierungstest in JUnit
Einführung in Java ab 0 Teil 1
Erste Schritte mit Ratpack (4) -Routing & Static Content
Beginnen Sie mit der Funktionsweise von JVM GC
Erste Schritte mit dem Language Server Protocol mit LSP4J
Erste Schritte mit dem Erstellen von Ressourcenpaketen mit ListResoueceBundle
Erste Schritte mit Java_Kapitel 8_Über "Instanzen" und "Klassen"
Links & Memos für den Einstieg in Java (für mich)
Erste Schritte mit der Doma-Projektion mit der Criteira-API
Erste Schritte mit Java 1 Ähnliche Dinge zusammenstellen
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Erste Schritte mit Doma-Using Joins mit der Criteira-API
Erste Schritte mit Doma-Einführung in die Kriterien-API
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Beginnen Sie mit Gradle
Evolve Eve mit Ruby
Erste Schritte mit Java-Programmen mit Visual Studio Code
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Erste Schritte mit Java und Erstellen eines Ascii Doc-Editors mit JavaFX
Ich habe DI mit Ruby versucht
Erste Schritte mit Doma-Dynamic Erstellen von WHERE-Klauseln mit der Kriterien-API
GraphQL Client beginnend mit Ruby
Beginnen Sie mit Spring Boot
Ruby: Mail mit Starttls senden
Formatieren Sie Ruby mit VS-Code
Wie man ganze Zahlen mit Rubin überprüft
Abschließende Zukunft Erste Schritte (Erste Zukunft)
[Ruby] Problem mit der if-Anweisung
Studieren bei CodeWar (Rubin) ⑤ proc
Verwenden Sie Ruby mit Google Colab
Erste Schritte mit der Git Hub Container Registry anstelle von Docker Hub
[ruby] Eine Methode mit einem Argument aufrufen
Zurück zum Anfang, Erste Schritte mit Java ② Steueranweisungen, Schleifenanweisungen
Fassen Sie die wichtigsten Punkte für den Einstieg in JPA zusammen, die Sie mit Hibernate gelernt haben