Programmation Ruby/Exemples de code

Un livre de Wikilivres.

Tous ces exemples peuvent être testés directement dans irb. Il existe une version web d'irb pour tester Ruby dans un navigateur : TryRuby.

Objets[modifier | modifier le wikicode]

Les nombres sont des objets. Pour obtenir la valeur absolue de -12 :

 -12.abs

La taille d'une chaîne de caractères :

 "Ruby est un langage dérivé de Perl et Python!".length

Trier un tableau et l'inverser :

 [ 1, 42, 5, 12, 6, 8 ].sort.reverse

Table de hachage :

 dangers = { "eau" => "mouille", "feu" => "brule" }
 puts "L'eau, ça " + dangers["eau"]

Blocs et itérateurs[modifier | modifier le wikicode]

Saluer 10 fois :

 10.times do
     puts "Salutations !"
 end

Afficher le carré de chaque nombre d'un tableau :

 [1, 2, 5, 8].each do |x|
   puts( x * x )
 end

Obtenir un tableau contenant la racine carrée de quelques nombres :

 racines = [2, 45, 999].map { |x| Math.sqrt(x) }

Trier des chaines de caractères en fonction de leur taille :

 [ "Bonjour", "Ruby", "Tic Tac" ].sort_by { |chaine| chaine.length }

Structures[modifier | modifier le wikicode]

Création d'une structure Livre :

 Livre = Struct.new "Livre", :titre, :auteurs, :isbn
 pickaxe = Livre.new "Programming Ruby", ["Dave Thomas", "Andrew Hunt"], "0-201-71089-7"
 puts pickaxe.titre

Classes[modifier | modifier le wikicode]

  1. Création d'une classe Bibliotheque qui stocke des livres
 class Bibliotheque
 
   # Accès direct au tableau de livres
   attr_reader :livres
   
   # Méthode appelée à la création d'un objet bibliothèque qui initialise le tableau de livres
   def initialize
     @livres = []
   end
   
   # Ajoute un livre à la bibliothèque, s'il n'y est pas déjà
   def ajouter livre
     raise "Le livre #{livre} est déjà dans la bibliothèque" if @livres.include? livre
     @livres << livre
   end
   
   # Retourne le nombre de livres dans la bibliothèque
   def taille
     @livres.length
   end
   
   # Retourne la liste des auteurs ayant écrit ou co-écrit au moins un livre dans la bibliothèque
   def auteurs
     @livres.map { |livre| livre.auteurs }.flatten.uniq
   end
 end
  1. Création de la bibliothèque
 biblio = Bibliotheque.new
</source >

# Ajout du livre créé plus haut
<syntaxhighlight lang="ruby">
 biblio.ajouter pickaxe
  1. Ajout d'un autre livre
 biblio.ajouter Livre.new("Ruby on Rails", ["Dave Thomas", "David Heinemeier Hansson"], "2-212-11746-9")
  1. Affichage de la liste des auteurs
 puts "Auteurs : " + biblio.auteurs.join(", ")

Qui affichera

Dave Thomas, Andrew Hunt, David Heinemeier Hansson