Si j'exécute ce fichier en tant que " ruby x.rb
" :
class X
end
x = X.new
Quelle est la chose qui appelle " X.new
" ?
S'agit-il d'un objet/processus/etc ?
Si j'exécute ce fichier en tant que " ruby x.rb
" :
class X
end
x = X.new
Quelle est la chose qui appelle " X.new
" ?
S'agit-il d'un objet/processus/etc ?
En Ruby, tout se passe dans le contexte d'un objet. L'objet de premier niveau est appelé "main". Il s'agit en fait d'une instance d'Object avec la propriété spéciale que toutes les méthodes qui y sont définies sont ajoutées comme méthodes d'instance d'Object (elles sont donc disponibles partout).
On peut donc faire un script composé entièrement de :
puts object_id
@a = 'Look, I have instance variables!'
puts @a
et il imprimera "105640" et "Regardez, j'ai des variables d'instance !".
Ce n'est pas quelque chose dont vous devez généralement vous préoccuper, mais c'est là.
C'est la classe X. Vous invoquez la méthode "new" qui crée un objet de la classe X. Donc, si vous exécutez ce texte comme un script, Ruby :
new
est un.x
new
sur cette nouvelle classe X
, créant un objet d'instance X ; x obtient une référence à cet objet.Comme l'a dit Charlie Martin, X.new est un appel au constructeur de la classe X, qui renvoie un objet de type X, stocké dans la variable x.
D'après votre titre, je pense que vous cherchez un peu plus. Ruby n'a pas besoin d'un main, il exécute le code dans l'ordre où il le voit. Les dépendances doivent donc être incluses avant d'être appelées.
Votre main est donc tout code de style procédural qui est écrit en dehors d'une définition de classe ou de module.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.