Page d'accueil encyclopedie-enligne.com en page d'accueil
Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées

Ruby


image:Langage_progr.png
Cet article fait partie de
la série Langages de programmation
Langages orientés objet
Ada 95 - C++ - C#
Common lisp object system
Delphi - Eiffel - Java - Nice
Langages impératifs
APL - ASP
Assembleur
BASIC - C - Pascal
Perl - PHP - Python
Langages fonctionnels
ML/OCaml - Lisp/Common Lisp
Forth - Logo - Scheme
Langages déclaratifs
Clips - Prolog
Voir aussi
Conception - Codage
Tests - Optimisations

Ruby est un langage interprété comparable à Perl et Python.

Yukihiro "Matz" Matsumoto a commencé l'écriture de ce langage en 1993 et a publié une première version en 1995. La syntaxe de Ruby est cohérente et conçue pour éviter autant que possible les mauvaises surprises. Le nom Ruby n'est pas un acronyme, mais un jeu de mot sur Perl.

Sommaire

Implémentations

L'interpréteur officiel a été porté sur de nombreux systèmes d'exploitation : Unix, Linux, Microsoft Windows, DOS, Mac OS X, OS/2, Amiga sous la double licence libre GNU GPL et la licence Ruby [1] . Il existe aussi un interpréteur moins utilisé en Java, JRuby [2] .

Fonctionnalités

Une définition rapide de Ruby pourrait être "un mélange de Smalltalk (tout objet, notion de bloc, système de gestion d'exceptions ...) et de Perl (langage de script indépendant d'un IDE, expressions régulières natives ...)", ainsi on retrouve les fonctionnalités fortes de ces deux langages  :

Exemples

Exemples de base

# tout est objet en Ruby, y compris les nombres et les chaînes de caractères :
-199.abs # 199
"Ruby est cool !".length # 15
"Ruby".index("b") # 2
"Bonjour tout le monde !".split(//).uniq.sort.join # " !Bdejlmnortu"

Tableaux et tables de hashage

création et utilisation d'un tableau :

t = [ 1, 'salut', 3.14, 1, 2, [4, 5] ]
t[2] # 3.14
t.reverse # [[4, 5], 2, 1, 3.14, "salut", 1]
t[2..4] << [8,7].sort # [3.14, 1, 2, [7, 8]]

pareil pour une table de hashage:

h = {"L'eau" => 'mouille', 'Le feu' => 'brule'}
puts h['Le feu']
h.each_pair do |key, value| 
 puts "#{key}, ca #{value} !"
end
# Le feu, ca brule !
# L'eau, ca mouille !
h.delete_if { |k,v| k == 'Le feu' } # supprime l'association 'Le feu' => 'brule'

Blocks et itérateurs

Un tableau avec les cubes des nombres de 1 à 10 :

(1..10).map { |x| x*x*x } # [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

Un bloc qui affiche 10 fois bonjour :

10.times do
 puts "Bonjour !"
end

Classe

Vous pouvez comparer cet exemple à son équivalent en Python.

class Fruit
end
class Pomme < Fruit
 @@Mangeurs = %w[Jacques Nicolas]
 attr_reader :couleur # définit un attribut 'couleur' que l'on peut lire, mais pas modifier
 
 def initialize(couleur)
 super()
 @couleur = couleur
 end
 
 def comestible?(nom)
 if not @@Mangeurs.member?(nom)
 puts nom + " n'aime pas les pommes."
 else 
 puts nom + " aime les pommes."
 end 
 end 
end 
petitePomme = Pomme.new('verte')
petitePomme.comestible? 'Pierre' # Pierre n'aime pas les pommes.
petitePomme.comestible? 'Nicolas # Nicolas aime les pommes.

Liens externes

Bibliographie




This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia