1: Methode 2: Klasse 3: Instanzmethode 4: Klassenmethode ist.
Eine Methode ist eine Methode, die mehrere Prozesse kombiniert.
greet.rb
def greet(name)
puts "#{name}, HELLO!"
end
greet('Alice')
> "Alice, HELLO"
** greet (name) ** entspricht der Methode. Die Methode wird nicht am definierten Teil geladen (def ~ end), sondern nur, wenn sie ausgeführt wird (greet ('Alice')).
Die Methode ist 1: Sie können den Wert übergeben 2: Der Auswertungswert wird am Ende zurückgegeben 3: Auf in der Methode definierte Variablen kann nicht extern zugegriffen werden Es hat die Funktion.
Wenn der Methodenname lang ist, ist es üblich, ihn in einem Schlangenfall zu schreiben.
** greet_her ** statt greetHer ** send_mail ** statt sendMail **
Es ist notwendig, in Form von zu schreiben.
1: Die durch die Methode definierte Verarbeitung kann wiederverwendet werden 2: Codeänderung wird einfacher
Angenommen, Sie haben einen solchen Code.
number.rb
puts 1
puts 2
puts 3
puts 4
puts 1
puts 2
puts 3
puts 4
Es ist sehr mühsam, Puts 1 nacheinander zu schreiben, daher werde ich sie mit einer Methode neu schreiben
number.rb
def number
puts 1
puts 2
puts 3
puts 4
end
number #1 in einem Lauf,2,3,4 Ausgänge gleichzeitig
> 1
> 2
> 3
> 4
Wenn Sie Puts 3 nicht mehr benötigen, können Sie Puts 3 in der Methode einfach löschen.
number.rb
def number
puts 1
puts 2
#Löschen
puts 4
end
number #1 in einem Lauf,2,4 Ausgänge gleichzeitig
> 1
> 2
> 4
Wenn Sie eine Methode erstellen, die auf diese Weise problemlos wiederverwendet werden kann, können Sie das Ganze leichter ändern.
Die Quelle, die beim Erstellen einer Instanz verwendet werden soll. Es ist vielleicht leichter vorstellbar, wenn Sie es als eine Form für die Herstellung von Keksen betrachten.
cookie.rb
Class Cookie #Name der Klasse=Cookie
def cookie #Methodenname=cookie
end
end
#Erstellen Sie tatsächlich eine Instanz aus einem Typ namens Cookie-Klasse ↓
cookie = Cookie.new
cookie
#Es wurde getan ↓
=> #<Cookie:0x00007ff34c847fa0>
<Cookie:0x00007ff34c847fa0> Ist eine Instanz, die von der Cookie-Klasse erstellt wurde. Eine Instanz kann erstellt werden, indem der Klassenname auf .new gesetzt wird. Eine Instanz bezieht sich auf die Entität selbst, die aus der Quelle erstellt wurde. Einfach gesagt, ein echter Keks aus einer Form.
Mit der Initialisierungsmethode können beim Erstellen einer Instanz Informationen bereitgestellt werden. Dieses Mal geben wir der Cookie-Instanz zwei Informationen, Größe und Geschmack.
cookie.rb
class Cookie
def initialize(size, taste)
@size = size
@taste = taste
end
end
cookie = Cookie.new('Large', 'Sweet')
cookie
=> #<Cookie:0x00007ff34d2a7108 @size="Large", @taste="Sweet">
Dies ermöglichte es uns, große, süß schmeckende Cookie-Instanzen zu generieren. Plötzlich kam heraus,
@size @taste
Diese Typen, die mit @ beginnen, heißen ** Instanzvariablen **, und Sie können die für jede Instanz gespeicherten Daten (für jedes Cookie) ändern. Diesmal ist Größe das erste Argument und Geschmack das zweite Argument, das 'Groß' bzw. 'Süß' entspricht. Indem Sie dies anwenden,
cookie.rb
cookie1 = Cookie.new('Medium', 'Bitter')
cookie1
=> #<Cookie:0x00007ff34d2cdd30 @size="Medium", @taste="Bitter">
cookie2 = Cookie.new('Small', 'Salty')
cookie2
=> #<Cookie:0x00007ff34d2cdd30 @size="Small", @taste="Salty">
Und Sie können Cookie-Instanzen mit mehreren Größen und Geschmacksrichtungen erstellen.
Eine Methode, die mit der erstellten Instanz (Cookie) ausgeführt werden kann. Im Moment gibt es drei Arten von Keksen: Small Salty, Medium Bitter und Large Sweet. Diese werden nur aus der Cookie-Klasse ** hergestellt und nicht verwendet. ** ** ** Instanzmethoden sollen mit diesen Leuten etwas anfangen.
cookie.rb
cookie2
=> #<Cookie:0x00007ff34d2cdd30 @size="Small", @taste="Salty">
def cookie_taste
puts "#{@taste}"
end
=> :cookie_taste
cookie.cookie_taste
> Salty
Den Daten der Instanzmethode @taste des Cookies ist es gelungen, die Daten an @taste von cookie_taste zu übergeben. Auf diese Weise kann die Instanzmethode auf die Daten verweisen, die auf den Daten der Instanz basieren.
Früher war es über eine Instanz, aber Sie können dasselbe über eine Klasse tun. Verwenden Sie diese Option, wenn Sie nicht auf die Instanzdaten verweisen müssen.
cookie.rb
class Cookie
# @@Diejenigen mit zwei werden als Klassenvariablen bezeichnet und können von allen Instanzen gemeinsam genutzt werden.
@@my_cookie_is = 0
def initialize(size, taste)
@size = size
@taste = taste
@@my_cookie_is += 1
end
#Instanzmethode
def show_info
puts "#{@taste}Kekse#{@size}Es gibt nur Größe."
end
#Klassenmethode
def self.show_all_cookie
puts "ich bin#{@@my_cookie_is}Ich werde ein Stück Keks essen."
end
end
Danach
cookie.rb
#Ausführung der Klassenmethode
cookie4 = Cookie.new('Medium','Bitter')
cookie4
=> #<Cookie:0x00007ff34d1ae440 @size="Medium", @taste="Bitter">
Cookie.show_all_cookie
Ich esse einen Keks.
#Ausführung der Klassenmethode
cookie5 = Cookie.new('Large','Salty')
cookie5
=> #<Cookie:0x00007ff34c851c30 @size="Large", @taste="Salty">
Cookie.show_all_cookie
Ich esse zwei Kekse.
#Ausführung der Instanzmethode
cookie4.show_info
Bittere Kekse sind nur mittelgroß.
#Ausführung der Instanzmethode
cookie5.show_info
Salzige Kekse sind nur in großen Größen erhältlich.
Wird sein.
[Ruby] Objektorientiertes Klassenkonzept, verstanden von Taiyaki https://pikawaka.com/ruby/class#%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9 Ich war sehr hilfreich. Ich habe es fast als kurze Version dieses Artikels geschrieben. Durch das Verfassen eines Artikels konnte ich das flache Wissen abdecken.
Recommended Posts