Outils pour utilisateurs

Outils du site


ruby:les_bases

Ceci est une ancienne révision du document !


A PCRE internal error occured. This might be caused by a faulty plugin

====== Ruby : les bases ====== ===== Array ===== ==== créer un tableau ==== * Array#map{|item| block} ([[http://ruby-doc.org/core-2.0/Array.html#method-i-map|documentation]]) : crée un nouveau tableau en exécutant le block sur chaque élément de Array * Array#select{|item| block} ([[http://ruby-doc.org/core-2.0/Array.html#method-i-select|documentation]]) : crée un nouveau tableau en filtrant les éléments de Array sur la base du block ==== trier un tableau ==== * Array#sort {|itemX, itemY| block} ([[http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-sort|doc]]) : tri un tableau en comparant les éléments un à un (itemX / itemY) puis en exécutant block ==== Accéder aux éléments ==== * tab[index] : accède à l'élément index de l'array tab * tab[-index] : accède à l'élément -index de l'array tab. Les éléments négatifs sont comptés depuis le dernier élément du tableau, à partir de 1. * tab[début, nombre] : renvoie nombre d'éléments du tableau tab, à partir de la position début exclue * tab[range(début)..range(fin)] : renvoie les éléments de tab situés entre range(début) et range(fin) inclus. * tab.first, tab.last : accède au premier élément (first) et dernier élément (last) de tab. * tab#join(SEP) ([[http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-join|doc]]) : renvoie un objet String contenant les éléments de tab séparés par SEP ==== Manipuler un tableau ==== * tab.reverse : inverse les éléments d'un tableau * ===== É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 <code ruby> 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 </code> * 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 <code ruby> # 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 } </code> * Énumération rapide <code ruby> for i in RANGE ... end # même résultat mais plus Rubyesque RANGE.each do |i| ... end </code> ===== Object ===== * Object#is_a?(Class) : renvoie true si Object est de type Class ===== String ===== * String#sub('X', 'Y') : remplace la première occurrence de X par Y * String#gsub('X', 'Y') : remplace toute les occurrences de X par Y * String#split(arg) ([[http://www.ruby-doc.org/core-2.0/String.html#method-i-split|doc]]) : renvoie un tableau contenant les éléments de String séparés par arg * String#downcase ([[http://www.ruby-doc.org/core-2.0/String.html#method-i-downcase|doc]]) : passe String en minuscule * String#upcase ([[http://www.ruby-doc.org/core-2.0/String.html#method-i-upcase|doc]]) : passe String en majuscule * String.split ([[http://ruby-doc.org/core-2.0/String.html#method-i-split|doc]]) : retourne un tableau de substrings selon le pattern passé en paramètre * String.scan {|RESULT| BLOCK} ([[http://ruby-doc.org/core-2.0/String.html#method-i-scan|doc]]) : scanne String selon le pattern passé en paramètre et, soit ajoute le résultat du scan au tableau renvoyé, soit exécute le block sur le résultat.

ruby/les_bases.1388055355.txt.gz · Dernière modification: 2016/10/17 13:55 (modification externe)