initialize Lorsqu'un objet est créé avec la nouvelle méthode, la méthode initialize de cet objet est exécutée.
class User
attr_reader :name, :address, :email
def initialize(name, address, email)
@name = name
@address = address
@email = email
end
end
private Les méthodes définies après la ligne qui dit private sont des méthodes privées et peuvent être utilisées de l'intérieur de l'objet mais pas de l'extérieur.
class Person
def initialize(money)
@money = money
end
def billionaire?
money >= 10000000
end
private
def money
@money
end
end
Utilisé lorsque vous souhaitez modifier certaines des fonctions d'une classe existante après avoir hérité de toutes les fonctions L'écrasement du traitement de la méthode de la classe parente par le traitement écrit par la classe enfant est appelé ** "override" **.
class PricedObject #Classe parent, super classe
def total_price
price * Tax.rate
end
def price
raise NotImplementedError
end
end
class product < PricedObject #Classe enfant, sous-classe
attr_accessor :price
end
class OrderedItem < PricedObject #Classe enfant, sous-classe
attr_accessor :unit_price, :volume
def price
unit_price * volume
end
end
L'unité de base de Ruby est un objet, et il existe une classe en tant que dessin de conception de l'objet. De plus, Ruby a le concept de ** "module" ** comme une collection de dessins de conception d'une série de comportements en un seul endroit.
La différence entre les modules et les classes est que les modules ne peuvent pas créer d'objets. Les modules représentent un ensemble de comportements qui peuvent être regroupés dans une classe en utilisant ** "inclure" **.
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
#Comment écrire en utilisant l'héritage
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
#Comment écrire à l'aide de modules
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
begin
#Code qui peut soulever une exception
rescue
#Code correspondant à l'exception
ensure
#Code que vous souhaitez toujours exécuter avec ou sans exception
end
Syntaxe pour saisir une valeur si la variable est nulle
#Exemple 1
a = nil
a ||= 3
puts a
# ==> 3
#Exemple 2
def people
@people ||= []
end
# ==>@Même si people est nul, un tableau vide est attribué et renvoyé lorsque cette méthode est appelée.
L'appel d'une méthode utilisant &. Ne provoque pas d'erreur même si le receveur est nul.
#Lors de l'utilisation si
name = if object
object.name
else
nil
end
#Lors de l'utilisation de l'opérateur Bocchi
name = object&.name
Si tous les éléments du tableau sont des chaînes, vous pouvez utiliser ** "% w" ** pour décrire le tableau
array1 = ['apple', 'banana', 'orange']
#==>["apple", "banana", "orange"]
#↓ Idem
array1 = %w(apple banana orange)
#==>["apple", "banana", "orange"]
Un tableau dans lequel tous les éléments sont des symboles peut être décrit en utilisant ** "% i" **
array1 = [:apple, :banana, :orange]
#==>[:apple, :banana, :orange]
#↓ Idem
array1 = %i(apple banana orange)
#==>[:apple, :banana, :orange]
[Référence | Guide pratique d'apprentissage rapide Ruby on Rails 5 qui peut être utilisé sur le terrain](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