====== Ruby : les bases ======
Tout ce qui concerne spécifiquement le [[rails:start|Framework Rails]]
===== Les tableaux =====
Voir la page consacrée aux [[ruby:arrays|tableaux]]
===== Les dictionnaires =====
Voir la page consacrée aux [[ruby:hash|dictionnaires]]
===== Range =====
* x..y : crée un range de x à y
* (x..y).to_a : crée un tableau contenant les éléments de x à y
===== Énumérations =====
* Enumerable#inject(ARG) {|RESULT, ITEM| BLOCK} (doc) :exécute BLOCK sur chaque élément ITEM de la collection, en passant le résultat d'une exécution à l'exécution suivante. Exemple :
Si l'on considère que menu est un [[http://www.ruby-doc.org/core-1.9.3/Hash.html|Hash]], la méthode Restaurant#cost
class Restaurant
def initialize(menu)
@menu = menu
end
def cost(*orders)
# parcourt orders pour calculer total_cost
orders.inject(0) do |total_cost, order|
# pour chaque key d'un order, on ajoute order[key] * menu[key] à cost
total_cost + order.keys.inject(0) {|cost, key| cost + @menu[key]*order[key] }
end
end
end
* Enumerable#all? {|item| BLOCK} ([[http://ruby-doc.org/core-2.0/Enumerable.html#method-i-all-3F|doc]]) : renvoie true si tous les éléments de la collection vérifient BLOCK. Si BLOCK n'est pas précisé, renvoie true si aucun élément de la collection n'est false ou nil
* Enumerable#find_all {} ([[http://ruby-doc.org/core-2.0/Enumerable.html#method-i-find_all|doc]]) : renvoie une nouvelle collection constituée des éléments de la collection appellante répondant à la condition BLOCK. Exemple sur un tableau values
# renvoie un tableau contenant tous les éléments de values non doublonnés. Permet donc de dédoublonner un tableau
values.find_all { |x| values.count(x) == 1 }
* Énumération rapide
for i in RANGE
...
end
# même résultat mais plus Rubyesque
RANGE.each do |i|
...
end
===== Object =====
* Object#is_a?(Class) : renvoie true si Object est de type Class
===== String =====
Voir la page consacrée aux [[ruby:strings|Strings]]