jeudi, avril 28, 2005

attr_reader, attr_writer et attr_accessor

Comme me la fait remarquer Frederick Ros dans les commentaires de une classe simple, on aurait put utiliser un attr_writer au lieu de faire la methode remplaceBonjour. Ben c'est ce que nous allons faire ;)
class BonjourClasse

  attr_writer :bonjour
  
  def initialize
    @bonjour = "bonjour"
  end

  def ditBonjour
    return @bonjour
  end
  
end

classe = BonjourClasse.new
puts classe.ditBonjour
classe.bonjour="test"
puts classe.ditBonjour

Résultat:
C:\ruby\rubyscube>ruby bonjour_classe_attr.rb
bonjour
test

Si on remplace attr_writer :bonjour par attr_reader :bonjour, on obtient:
C:\ruby\rubyscube>ruby bonjour_classe_attr.rb
bonjour
bonjour_classe_attr.rb:17: undefined method `bonjour=' for # (NoMethodError)

mercredi, avril 27, 2005

Une Classe simple

Voila une petite classe simple qui dit bonjour, la variable avec @ est une variable d'instance.
class BonjourClasse

  def initialize(nom)
    @bonjour = "bonjour"
    @nom = nom
  end
  
  def ditBonjourToutLeMonde
    return @bonjour + " tout le monde"
  end
  
  def ditBonjourEtMonNom
    return @bonjour + " " + @nom
  end
  
  def remplaceBonjour=(nouveauBonjour)
    @bonjour = nouveauBonjour
  end

end

classe = BonjourClasse.new("moi")
puts "Pour tout le monde: \t" + classe.ditBonjourToutLeMonde
puts "Pour moi: \t\t" + classe.ditBonjourEtMonNom

classe.remplaceBonjour = "test"
puts "Pour tout le monde: \t" + classe.ditBonjourToutLeMonde

Résultat:
C:\ruby\rubyscube>ruby bonjour_classe.rb
Pour tout le monde:     bonjour tout le monde
Pour moi:               bonjour moi
Pour tout le monde:     test tout le monde