« Programmation Ruby/Méthodes » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
 
Ligne 15 :
Ils peuvent être fournis de façon unique ou en liste via :
 
<sourcesyntaxhighlight lang="ruby">
def mamethode(param1, *reste)
"mon param1 : #{param1}" << "et le #{reste.join(', ')}" unless reste.empty?
Ligne 22 :
mamethode("toto", "titi") » "mon param1 : toto et titi"
mamethode "toto", "titi", "tutu" » "mon param1 : toto et titi, tutu"
</syntaxhighlight>
</source>
 
=== Les blocs liés ===
Ligne 28 :
Une méthode Ruby peut recevoir en paramètre la référence à un bloc de code tel que :
 
<sourcesyntaxhighlight lang="ruby">
def donnezmoiducode(param)
if block_given?
Ligne 38 :
donnezmoiducode("j'ai faim !") » "j'ai faim !"
donnezmoiducode("J'ai faim !") { |s| s = "miam !"') } # => "miam !"
</syntaxhighlight>
</source>
 
Si en dernier paramètre de méthode, en prototype, on trouve une déclaration explicite avec une esperluette, alors le bloc est converti en objet Proc et cet objet entre dans la liste de paramètres de la méthode :
 
<sourcesyntaxhighlight lang="ruby">
class BoiteACalculs
def initialize(nom, &bloc)
Ligne 54 :
calcul. application(10) #=> "10 Fois deux = 20"
calcul. application(20) #=> "20 Fois deux = 40"
</syntaxhighlight>
</source>
 
== le constructeur initialize ==
Ligne 60 :
La méthode <code>initialize</code>, par exemple, est la méthode appelée lorsqu'une instance est créée via la méthode <code>new</code> :
 
<sourcesyntaxhighlight lang="ruby">
class Point
def initialize ( x, y )
Ligne 71 :
end
end
</syntaxhighlight>
</source>
 
Ici la méthode <code>initialize</code> définie les variable d'instances @x et @y en fonction des paramètres passés à la fonction <code>new</code>.
 
Si par exemple on initialise un objet comme suit :
<sourcesyntaxhighlight lang="ruby">
p = Point.new(2,3)
# -> @x = 2 et @y = 3
</syntaxhighlight>
</source>
 
== Valeurs par défaut ==
On peut en Ruby donner des valeurs par défaut aux arguments des méthodes.
<sourcesyntaxhighlight lang="ruby">
class Parle
def initialize ( nom = "vous" )
Ligne 92 :
end
end
</syntaxhighlight>
</source>
 
Si l'on appelle la méthode sans argument, la valeur par défaut est assigné à la variable d'instance <code>@qui</code>
<sourcesyntaxhighlight lang="ruby">
dit = Parle.new
dit.bonjour
# => Bonjour vous
</syntaxhighlight>
</source>
 
Si l'on appelle la méthode avec un argument, celui-ci remplacera la valeur par défaut :
<sourcesyntaxhighlight lang="ruby">
dit2 = Parle.new("Roger")
dit2.bonjour
# => Bonjour Roger
</syntaxhighlight>
</source>