[RAILS] Einführung in Ruby 2

initialize Wenn ein Objekt mit der neuen Methode erstellt wird, wird die Initialisierungsmethode dieses Objekts ausgeführt.

class User
 attr_reader :name, :address, :email
 def initialize(name, address, email)
  @name = name
  @address = address
  @email = email
 end 
end

private Methoden, die nach der Zeile private definiert sind, sind private Methoden und können von innerhalb des Objekts, jedoch nicht von außen verwendet werden.

class Person
 def initialize(money)
  @money = money
 end

 def billionaire?
  money >= 10000000
 end

 private
 def money
  @money 
 end
end

Erbe

Wird verwendet, wenn Sie einige Funktionen einer vorhandenen Klasse ändern möchten, nachdem Sie im Grunde alle Funktionen geerbt haben Das Überschreiben der Verarbeitung der Methode der übergeordneten Klasse mit der von der untergeordneten Klasse geschriebenen Verarbeitung wird als ** "Überschreiben" ** bezeichnet.

class PricedObject #Elternklasse, Superklasse
 def total_price
  price * Tax.rate
 end

 def price
  raise NotImplementedError
 end
end

class product < PricedObject #Kinderklasse, Unterklasse
  attr_accessor :price
end

class OrderedItem < PricedObject #Kinderklasse, Unterklasse
 attr_accessor :unit_price, :volume

 def price
  unit_price * volume
 end
end

Modul

Die Grundeinheit von Ruby ist ein Objekt, und es gibt eine Klasse als Konstruktionszeichnung des Objekts. Darüber hinaus hat Ruby das Konzept des "Moduls" als Sammlung von Konstruktionszeichnungen einer Reihe von Verhaltensweisen an einem Ort.

Der Unterschied zwischen Modulen und Klassen besteht darin, dass Module keine Objekte erstellen können. Module stellen eine Reihe von Verhaltensweisen dar, die mit ** "include" ** zu einer Klasse zusammengefasst werden können. Screen Shot 2020-07-26 at 12.21.19.png

module Talking
 def talk
  "Bow-wow"
 end
module Walking
 def walk
  "Teke Teke"
 end
end

class Dog
 include Talking
 include Walking
end

mugi = Dog.new
mugi.talk
mugi.walk
#Wie schreibe ich mit Vererbung
class PricedObject
 def total_price
  price * Tax.rate
 end

 def price
  raise NotImplementedError
 end
end

class product < PricedObject
  attr_accessor :price
end

class OrderedItem < PricedObject
 attr_accessor :unit_price, :volume

 def price
  unit_price * volume
 end
end

#Wie man mit Modulen schreibt
module PricedHolder
 def total_price
  price * Tax.rate
 end
end

class product
 include PriceHolder
  attr_accessor :price
end

class OrderedItem
 include PriceHolder
 attr_accessor :unit_price, :volume

 def price
  unit_price * volume
 end
end

Ausnahme fangen

  1. Schreiben Sie den Code in begin, der eine Ausnahme verursachen kann
  2. Beschreiben Sie, wie mit der Ausnahme umgegangen werden soll, die bei der Rettung aufgetreten ist
  3. Beschreiben Sie außerdem die Nachbearbeitung, die Sie durchführen möchten, unabhängig davon, ob eine Ausnahme auftritt oder nicht, um sicherzustellen.
begin
 #Code, der eine Ausnahme auslösen kann
rescue
 #Code, der der Ausnahme entspricht
ensure
 #Code, den Sie immer mit oder ohne Ausnahme ausführen möchten
end

keine Wache

Syntax zur Eingabe eines Werts, wenn die Variable Null ist

#Beispiel 1
a = nil
a ||= 3
puts a
# ==> 3

#Beispiel 2
def people
 @people ||= []
end
# ==>@Selbst wenn people nil ist, wird beim Aufruf dieser Methode ein leeres Array zugewiesen und zurückgegeben.

Bocchi-Operator (sicherer Navigationsoperator)

Das Aufrufen einer Methode mit &. Verursacht keinen Fehler, auch wenn der Empfänger Null ist.

#Bei Verwendung von if
name = if object
 object.name
else
 nil
end

#Bei Verwendung des Bocchi-Operators
name = object&.name

%Notation

Wenn alle Elemente des Arrays Zeichenfolgen sind, können Sie das Array mit ** "% w" ** beschreiben

array1 = ['apple', 'banana', 'orange']
#==>["apple", "banana", "orange"]
#↓ Gleich
array1 = %w(apple banana orange)
#==>["apple", "banana", "orange"]

Ein Array, in dem alle Elemente Symbole sind, kann mit ** "% i" ** beschrieben werden

array1 = [:apple, :banana, :orange]
#==>[:apple, :banana, :orange]
#↓ Gleich
array1 = %i(apple banana orange)
#==>[:apple, :banana, :orange]

[Referenz | Ruby on Rails 5 - Kurzanleitung, die vor Ort verwendet werden kann](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD % BF% E3% 81% 88% E3% 82% 8B-Ruby-Rails-5% E9% 80% 9F% E7% BF% 92% E5% AE% 9F% E8% B7% B5% E3% 82% AC % E3% 82% A4% E3% 83% 89-% E5% A4% A7% E5% A0% B4% E5% AF% A7% E5% AD% 90 / dp / 4839962227)

Recommended Posts

Einführung in Ruby 2
Einführung in web3j
Einführung in Micronaut 1 ~ Einführung ~
Einführung in Ruby (aus anderen Sprachen)
[Java] Einführung in Java
Einführung in die Migration
Einführung in Java
Einführung in Doma
Einführung in JAR-Dateien
Einführung in Ratpack (8) -Session
Einführung in die Bitarithmetik
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Einführung in Entwurfsmuster (Einführung)
Einführung in die praktische Programmierung
Einführung in den Befehl javadoc
Von Java zu Ruby !!
Einführung in den Befehl jar
Einführung in Ratpack (2) -Architektur
Einführung in den Lambda-Stil
Einführung in den Java-Befehl
Einführung in die Keycloak-Entwicklung
Einführung in den Befehl javac
Einführung in Entwurfsmuster (Builder)
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Einführung in die Android App-Entwicklung
Einführung in Ratpack (5) --Json & Registry
Verwendung von Ruby return
In Ruby Leet-Zeichenfolge konvertieren
Einführung in Metabase ~ Umgebungskonstruktion ~
Einführung in Ratpack (7) - Guice & Spring
(Punktinstallation) Einführung in Java8_Impression
Einführung in Entwurfsmuster (Composite)
Einführung in Micronaut 2 ~ Unit Test ~
[Ruby] Wie man auskommentiert
Einführung in JUnit (Studiennotiz)
Einführung in Spring Boot ~ ~ DI ~
Einführung in Designmuster (Fliegengewicht)
[Java] Einführung in den Lambda-Ausdruck
Einführung in Spring Boot ② ~ AOP ~
Einführung in Apache Beam (2) ~ ParDo ~
Einführung in die EHRbase 2-REST-API
Rbenv-Befehl zur Verwendung von Ruby
Ruby: Wie man Cookies benutzt
Einführung in Entwurfsmuster Prototyp
[Java] Einführung in die Stream-API
Einführung in Entwurfsmuster (Iterator)