Modificateurs de filtre anti-abus, Bureaucrates, Administrateurs d’interface, Exemptés de blocage d’IP, Administrateurs
26 385
modifications
(→Méthodes de l'instance : clarifie l'exemple) |
(Formulation + ortho + <source>) |
||
== initialize ==
La méthode <tt>initialize</tt>, par exemple, est la méthode
<source lang="ruby">
class Point
def initialize (
end
def coords
puts "y : #{@y}"
end
</source>
Ici la méthode <tt>initialize</tt> définie les variable d'instances @x et @y en fonction des paramètres passés à la fonction <tt>new</tt>.
Si par exemple on initialise
<source lang="ruby">
p = Point.new(2,3)
# -> @x = 2 et @y = 3
</source>
== Valeurs par défaut ==
On peut en Ruby donner des valeurs par défaut aux arguments des méthodes.
<source lang="ruby">
class Parle
def initialize (
end
def bonjour
puts "Bonjour #{@qui}"
end
</source>
Si l'on
<source lang="ruby">
dit = Parle.new
dit.bonjour
# => Bonjour vous
</source>
Si l'on appelle la méthode avec un argument, celui-ci remplacera la valeur par défaut :
<source lang="ruby">
dit2 = Parle.new("Roger")
dit2.bonjour
# => Bonjour Roger
</source>
== Méthodes de l'instance ==
La méthode générique, présente dans toutes les
<source lang="ruby">
Parle.instance_methodes
# "instance_variable_defined?", "public_methods", "hash", "to_a", "clone", "protected_methods", "respond_to?",
# "display", "freeze", "kind_of?", "==", "instance_variable_set", "type", "===", "equal?", "methods"]
</source>
Cette liste contient l'ensemble des méthodes existant par défaut, plus celle qui ont été créées.
On peut obtenir une liste restreinte aux fonctions que l'on a crée en remplaçant l'argument <tt>true</tt> (vrai, valeur par défaut) par <tt>false</tt> (faux) :
<source lang="ruby">
Parle.instance_methods(false)
# => ["bonjour"]
</source>
Au contraire, on peut obtenir les méthodes qui ne sont pas que des méthodes d'instances :
<source lang="ruby">
Parle.methods
# => ["inspect", "private_class_method", "const_missing", "clone", "method", "public_methods",
# "public_instance_methods", "instance_variable_defined?", "method_defined?", "superclass", "equal?", "freeze",
# "protected_instance_methods", "instance_variables", "public_method_defined?", "__id__", "eql?", "object_id",
# "const_set", "id", "singleton_methods", "send", "class_eval", "taint", "frozen?", "instance_variable_get",
# "include?", "private_instance_methods", "__send__", "instance_of?", "private_method_defined?", "to_a", "name",
# "autoload", "type", "new", "<", "protected_methods", "instance_eval", "<=>", "display", "==", ">", "===",
# "instance_method", "instance_variable_set", "kind_of?", "extend", "protected_method_defined?", "const_defined?",
# ">=", "ancestors", "to_s", "<=", "public_class_method", "allocate", "hash", "class", "instance_methods",
# "tainted?", "=~", "private_methods", "class_variable_defined?", "nil?", "untaint", "constants", "is_a?",
# "autoload?"]
</source>
=== Classe de l'instance ===
La
<source lang="ruby">
dit = Parle.new
dit.type
# => Parle
</source>
== Existence d'une méthode ==
On peut déterminer si une méthode existe ou pas à l'aide des méthodes par défaut :
<source lang="ruby">
Parle.method_defined?("bonjour")
# => true
Parle.method_defined?("aurevoir")
# => false
</source>
On peut également déterminer si elle est publique (accessible en dehors de la classe) :
<source lang="ruby">
Parle.public_method_defined?("bonjour")
# => true
</source>
[[Catégorie:Programmation Ruby (livre)]]
|