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

Contenu supprimé Contenu ajouté
On dégrossit une partie
(Aucune différence)

Version du 23 décembre 2007 à 02:03

En programmation objet, les méthodes sont les fonctions appartenant à une classe.

En Ruby, elle sont définies de la façon suivante :

def <nom de la méthode> (<arguments>)
  <bloc de code de la méthode>
end

Plusieurs méthodes sont prédéfinies dans toutes les classes.

initialize

La méthode initialize par exemple est la méthode appellée lorsqu'une instance est crée via la méthode new :

class Point
  def initialize ( x, y )
    @px = x
    @py = y
  end
end

Ici la méthode initialize définie les variable d'instances @px et @py en fonction des paramètres passés à la fonciton new.

Si par exemple on initialise cette classe comme suit :

p = Point.new(2,3)

@px = 2 et @py = 3

Valeurs par défaut

On peut en Ruby donner des valeurs par défaut aux méthodes.

class Parle
  def initialize ( nom = "vous" )
    @qui = nom
  end
  def bonjour
    puts "Bonjour #{@qui}"
  end
end

Si l'on crée la méthode sans argument, la valeur par defaut est assigné à la variable d'instance @qui

dit = Parle.new
dit.bonjour
                    => Bonjour vous

Si l'on crée la méthode avec un argument, celui-ci remplacera la valeur par défaut :

dit2 = Parle.new("Roger")
dit2.bonjour
                    => Bonjour Roger

méthodes de l'instance

La méthode générique, présente dans toutes les classe, instance_methods renvoie la liste des méthodes existantes.

Parle.instance_methodes
=> ["bonjour", "method", "instance_variables", "__id__", "to_s", "send", "object_id", "dup", "private_methods",
"=~", "is_a?", "class", "tainted?", "singleton_methods", "eql?", "untaint", "instance_of?", "id",
"instance_variable_get", "inspect", "instance_eval", "extend", "nil?", "__send__", "frozen?", "taint",
"instance_variable_defined?", "public_methods", "hash", "to_a", "clone", "protected_methods", "respond_to?",
"display", "freeze", "kind_of?", "==", "instance_variable_set", "type", "===", "equal?", "methods"]

Cette liste contient l'ensemble des méthodes existant par défaut, plus celle qui ont été crées.

On peut obtenir une liste réstreintes au fonctions que l'on a crée en remplacant le true (vrai, valeur par défaut) par un false (faux) :

Parle.instance_methods(false)
=> ["bonjour"]