[RAILS] Introduction à Ruby 2

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

Héritage

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

module

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" **. 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
#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

Capture d'exception

  1. Écrivez le code au début qui peut provoquer une exception
  2. Décrivez comment traiter l'exception qui s'est produite lors du sauvetage
  3. En outre, décrivez le post-traitement que vous souhaitez effectuer, qu'une exception se produise ou non lors de la vérification.
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

aucun garde

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.

Opérateur Bocchi (opérateur de navigation sûr)

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

%notation

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

Introduction à Ruby 2
Introduction à web3j
Introduction à Micronaut 1 ~ Introduction ~
Introduction à Ruby (à partir d'autres langues)
[Java] Introduction à Java
Introduction à la migration
Introduction à Java
Introduction à Doma
Introduction aux fichiers JAR
Introduction à Ratpack (8) - Session
Introduction à l'arithmétique des bits
Introduction à Ratpack (6) - Promesse
Introduction à Ratpack (9) --Thymeleaf
Introduction à PlayFramework 2.7 ① Présentation
Introduction à la mise en page Android
Introduction aux modèles de conception (introduction)
Introduction à la programmation pratique
Introduction à la commande javadoc
De Java à Ruby !!
Introduction à la commande jar
Introduction à Ratpack (2) -Architecture
Introduction au style lambda
Introduction à la commande java
Introduction au développement de Keycloak
Introduction à la commande javac
Introduction aux modèles de conception (Builder)
[Introduction] Créer une application Ruby on Rails
Introduction au développement d'applications Android
Introduction à Ratpack (5) --Json & Registry
Comment utiliser le retour Ruby
Convertir en chaîne Ruby Leet
Introduction à la métabase ~ Construction de l'environnement ~
Introduction à Ratpack (7) --Guice & Spring
(Installation par points) Introduction à Java8_Impression
Introduction aux modèles de conception (composite)
Introduction à Micronaut 2 ~ Test unitaire ~
[Ruby] Comment commenter
Introduction à JUnit (note d'étude)
Introduction à Spring Boot ① ~ DI ~
Introduction aux modèles de conception (poids mouche)
[Java] Introduction à l'expression lambda
Introduction à Spring Boot ② ~ AOP ~
Introduction à Apache Beam (2) ~ ParDo ~
Introduction à l'API EHRbase 2-REST
Commande Rbenv pour utiliser Ruby
Ruby: Comment utiliser les cookies
Introduction au prototype de modèles de conception
[Java] Introduction à l'API Stream
Introduction aux modèles de conception (Iterator)