・ Relation entre classe et instance La classe est un parent et les instances sont des enfants, et il existe de nombreuses instances dans la classe. Pour donner un exemple, cela signifie que M. A (instance), M. B (instance), M. C (instance) et M. D (instance) existent dans la silhouette (classe) des êtres humains.
type | Fonctionnalité |
---|---|
Variables locales | Variables temporaires ad hoc. Ne peut être utilisé que dans la méthode définie |
Variable d'instance | Variables détenues par l'objet. S'il est défini dans une instance, il peut être utilisé pour toute méthode qui n'existe pas dans cette instance. |
Exemple)
class MyClass
def method_1
@number=100
end
def method_2
@number #Autres méthodes(method_1)Défini dans@une autre méthode pour le nombre(method_2)Disponible à
end
end
Si vous souhaitez utiliser correctement des variables d'instance telles que @name, vous devez faire deux choses:
class User
def name=(name) #1.
@name = name
end
def name #2.
@name
end
La méthode qui peut utiliser @name n'est terminée qu'après être venu ici. ... mais c'est ennuyeux.
class User
attr_accessor :name
end
En utilisant attr_accessor, il a été actualisé à la fois.
Divers attributs peuvent être attachés à attr_accessor
class User
atte_accessor :name, :address, :email
end
Si vous souhaitez utiliser chaque attribut, procédez comme suit
user = User.new
user.name = "Yu Odai"
user.address = "Tokyo"
def profile #J'ai créé une méthode pour afficher le nom et l'origine
"#{name}(#{address})"
end
user.profile #Exécution de la méthode de profil qui affiche le nom et l'origine de l'utilisateur ensemble
=> "Yu Odai(Tokyo)"
Vous pouvez saisir et appeler les informations utilisateur en utilisant le nom et l'adresse.
if exécutera le processus lorsque le résultat de la condition est vrai, mais à moins d'exécuter le processus lorsque le résultat de la condition est faux. (Faites l'inverse de if)
L'habituel si est attaché à l'arrière. Si etc. ne peut pas être attaché et agit sur une seule ligne
puts 'Bonjour' if true #Production
puts 'Je vous remercie pour votre travail acharné' if false #Pas de sortie
Le code ci-dessus sera "Imprimer des mises si le résultat est vrai" Puisque le résultat est vrai, "Bonjour" est sorti.
Si vous souhaitez obtenir la valeur souhaitée dans un tableau normal, vous devez spécifier le nombre (nombre). Cela devient impossible à mesure que la quantité d'informations dans la séquence augmente. Par conséquent, nous utilisons un hachage et donnons à chaque valeur quelque chose comme un surnom (clé). Ce faisant, si vous entrez un surnom, la valeur qui lui est associée apparaîtra automatiquement.
jinnkou ={ tokyo: 13636222, kanagawa: 9145572 }
#{Surnom (clé):Population de Tokyo,Surnom (clé):Population de Kanagawa}
puts jinnkou[:tokyo]
=> 13636222
Mettez: entre [] et mettez le surnom (clé)
1-4-1 initialize Chaque fois que vous exécutez "OO.new" dans Ruby, l'initialisation dans la classe de OO est exécutée. Vous permet de saisir des valeurs qui correspondent aux colonnes du tableau Par exemple, lorsque vous insérez de nouvelles informations dans la table Utilisateur avec le nom, l'adresse, les colonnes d'e-mail Si vous écrivez initialize (nom, adresse, email), vous effectuerez des opérations telles que "le premier entre parenthèses est le nom, le second est l'adresse et le troisième est le mail".
class User #User.Vous pouvez utiliser initialiser quand nouveau
def initialize(name, address, email)
@name = name
@address = address
@email = email
end
end
user = User.new("Neiko Oba","Tokyo","nil")
# || || ||
#initialize( name ,address, email)
En termes de sécurité, si quelqu'un peut utiliser la méthode, cela causera des problèmes tels que des fuites d'informations personnelles, alors utilisez la méthode privée pour éviter que la méthode ne soit utilisée de l'extérieur.
Faites des méthodes à petite échelle (un seul processus ou le processus lui-même facile) en un groupe en tant que module afin qu'il puisse être utilisé dans différentes classes.
#Module résumant le prix
module PriceHolder
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
#Prix unitaire HT*quantité
def price
unit_price*volume
end
end
Le processus de multiplication du prix par le taux de taxe à la consommation pour obtenir la valeur de retour est utilisé comme module PriceHolder, et le module PriceHolder est utilisé pour chaque classe. Utilisez include lors de l'utilisation de modules.
number ||=10
S'il y a un nombre, nombre est utilisé, sinon nombre est utilisé en remplaçant 10 par nombre.
Par exemple, si vous avez une table User mais tapez object.name, vous obtiendrez une erreur car il n'y a pas de table d'objets. Cependant, si vous utilisez l'objet opérateur bocchi & .name, nil sera renvoyé comme valeur de retour au lieu d'une erreur s'il n'y a pas de table.
ary1 = ['apple', 'banana' ,'orange']
# %Si vous utilisez la notation
ary1 = %w[apple banana orange]
Si vous utilisez la notation%, vous pouvez omettre "" et ainsi de suite.
class User
attr_accessor :name, :address
end
user1 = User.new(name:'Neiko Oba', address:'Tokyo')
user2 = User.new(name:'Miyuki Koshiba', address:'Préfecture de Chiba')
user3 = User.new(name:'Yu Odai', address:'Préfecture de Kanagawa')
users = [user1,user2.user3]
À ce stade, si vous voulez un tableau contenant uniquement les noms de chaque utilisateur, utilisez la méthode map.
names = users.map(&:name)
=>["Neiko Oba","Miyuki Koshiba","Yu Odai"]
De cette façon, si vous utilisez le tableau d'origine .map (&: informations souhaitées), vous pouvez créer un tableau contenant uniquement les informations souhaitées.
1.require: utilisé lors de la lecture du code source (user.rb dans ce cas)
> require './user.rb'
La valeur renvoyée lors de l'exécution de la méthode est appelée "valeur de retour". Fondamentalement, lorsqu'une méthode est exécutée, elle donne une valeur de retour, mais elle donne une valeur de retour lorsque toutes les méthodes ont été exécutées. Si vous voulez une valeur de retour au milieu de la méthode, utilisez return pour obtenir la valeur de retour.
Recommended Posts