[RUBY] Was für eine Methode ist define_method?

Was für eine Methode ist define_method?

Als ich gem las, fand ich eine Methode namens define_method. Ich war mir nicht sicher, also habe ich nachgeschlagen. Wörtlich übersetzt definiert es die Methode. Eine Methode namens. Ich verstehe nicht mehr und mehr. ..

Schauen wir uns also ein Beispiel an.

ruby.rb


NUMBERS = %w(zero one two three four five six seven eight nine)

NUMBERS.each_with_index do |word, num|
  define_method word do |i = nil|
    i ? num * i : num
  end
end

p two      #=> 2
p two(2)   #=> 4
p nine     #=> 9
p nine(3)  #=> 27

** define_method ist eine Methode, mit der Methoden dynamisch definiert werden können ** Selbst im obigen Beispiel sind die Methoden wie zwei und neun nicht direkt definiert. Es kann als Methode verwendet werden. Dies liegt daran, dass define_method zwei und neun Methoden dynamisch definiert.

ruby.rb


NUMBERS.each_with_index do |word, num|
  define_method word do |i = nil|
    i ? num * i : num
  end
end

Das Wort wird im Argument von define_method übergeben. Dies ist der dynamisch definierte Methodenname. Word enthält Elemente des Arrays ["Null", "Eins", "Zwei", ... "Neun"]. Also könnte ich die zwei, neun Methoden anwenden.

Der Blockteil von define_method ist der Verarbeitungsinhalt der dynamisch definierten Methode.

ruby.rb


define_method word do |i = nil|
    i ? num * i : num
  end

Wenn i existiert, gibt es i * num und i * num zurück. Wenn es nicht existiert, gibt es num zurück.

Und ich bin das Argument der neu definierten Methode. Schauen wir uns zum Schluss noch einmal das Verarbeitungsergebnis an.

p two      #=> 2 #Gibt num zurück, da kein Argument vorhanden ist
p two(2)   #=> 4 #2 weil es ein Argument gibt* 2 = 4
p nine     #=> 9 #Gibt num zurück, da kein Argument vorhanden ist
p nine(3)  #=> 27 #9 weil es ein Argument gibt* 3 = 27

Dies ist das Ende der Erklärung von define_method. Ich hoffe, Sie finden es nützlich.

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

Recommended Posts

Was für eine Methode ist define_method?
Was für ein StringUtil ist gut?
Was ist die Zupfmethode?
Was ist die Initialisierungsmethode?
'% 02d' Was ist der% von% 2?
Was ist es? ~ 3 Arten von "Nein" ~
Road to Java Engineer Part2 Was für eine Sprache ist Java?
Was ist ein Test? ・ Über die Wichtigkeit eines Tests
[Für Programmieranfänger] Was ist eine Methode?
Was ist die Hauptmethode in Java?
Wie ist die Datenstruktur von ActionText?
Was ist Cubby?
Was ist null? ]]
Was ist java
Was ist Schlüsselumhang?
Was ist Maven?
Was ist Jackson?
Was ist Selbst
Was ist Jenkins?
Was ist IM-Jonglieren?
Was ist params
Was ist Fassade? ??
Was ist Java <>?
Was ist Gradle?
Was ist POJO?
Was ist java
Was ist centOS?
Was ist RubyGem?
Was ist before_action?
Was ist Docker?
Was ist Byte?
Was ist Tomcat?
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
Was ist Maven Assembly?
Überprüfen Sie, ob has_many vorhanden ist und zu optional gehört: Was ist wahr?
Was ist Docker-Compose?
Was ist vue cli
Was ist eine Schnittstelle?
Was ist Rubys Selbst?
Was ist Rubys attr_accessor?
Was ist Java-Kapselung?
Was ist die Erlaubnis verweigert?
Was ist Instanzsteuerung?
Was ist ein Initialisierer?
Was ist Spring Tools 4?
Was ist ein Operator?
Was ist Guavas @VisibleForTesting?
Definition der Rubinmethode
Was ist ein MVC-Modell?
Was ist eine Anmerkung?
Was ist Java-Technologie?
Was ist Java API-Java?
Was ist Gradles Artefakt?
Was ist JPA-Prüfung?
[Java] Was ist flatMap?
Was ist ein Servlet?