Ruby base
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Sujet | Bases du langage Ruby |
| Console | Irb |
| Suite | Ruby base2 |
| Voir aussi | Ruby · Structure de donnees (Ruby) |
Notions de base du langage Ruby : expressions, lambdas (blocs anonymes), classes et méthodes. Les exemples se testent dans Irb.
Premières expressions
puts 5 + 6
a = 5
b = 6
puts a + b
# Un lambda est un bloc de code anonyme
addition = lambda { |a, b| return a + b }
puts addition.call(5, 6)
empty_block = lambda { }
puts empty_block.object_id
puts empty_block.class
puts empty_block.class.superclass
Classes
class Calculator
def add(a, b)
return a + b
end
end
puts Calculator.new.add(5, 6)
Récupérer une méthode d'une instance et la transformer en proc :
class Calculator
def add(a, b)
return a + b
end
end
addition_method = Calculator.new.method("add")
addition = addition_method.to_proc
puts addition.call(5, 6)
Exercice : compléter les opérations sur le modèle de l'addition.
Addition = lambda { |a, b| return a + b }
Subtraction = lambda { } # votre code entre les accolades
Multiplication = lambda { }
Division = lambda { }
Ouvrir une classe existante
Ruby permet de rouvrir une classe standard (ici Array) pour y ajouter une méthode :
class Array
def foldl(method)
inject { |result, i| result ? result.send(method, i) : i }
end
end
puts [1000.0, 200.0, 50.0].foldl("/")
Fibers
# Charger la stdlib fiber donne des fonctions supplémentaires, dont Fiber#alive?
require "fiber"
class FakeEnumerator
def next
@fiber ||= Fiber.new do
each { |e| Fiber.yield(e) }
raise StopIteration
end
if @fiber.alive?
@fiber.resume
else
raise StopIteration
end
end
end
Voir aussi
- Ruby
- Ruby base2 — suite (variables, ranges, tableaux, fichiers)
- Structure de donnees (Ruby)
- Irb