lundi 28 juillet 2008

Forgotten Ruby methods

Ou plutôt les méthodes que je n'utilise pas assez... Sur les tableaux, les chaînes de caractères et quelques autres petites choses très mignonnes comme l'opérateur ternaire, l'affectation multiple (à consommer avec modération...) et le ||. 21 autres choses très intéressantes dans cet article.

Petit mot sur la méthode extend : d'un point de vue POO, elle permet en quelque sorte "d'instancier un module". Si une classe étend un module Mod, les "méthodes d'instance" de celui-ci seront transmises à la classe en tant que méthode de classe. Si l'on étend Mod avec un simple objet (bon, d'accord, une classe est un objet... mon explication précédente reste valable.), celui-ci se comportera comme une instance de Mod, avec les méthodes qui vont avec... Deux bonnes sources sur le sujet : [Ruby's Cube, :fr] et [Juixe TechKnow, :en].


### Multiple affectation  and || ###
a, b = nil, 10
#=> [nil, 10]
a || b
#=> 10

### On Arrays... ###
a = [0,"111",2,3,3,3,3]
a.class
#=> [0,"111",2,3,3,3,3]
a.delete 3
#=> 3
a
#=> [0,"111",2]
a.delete_at 1
#=> "111"
a
#=> [0,2]
a.insert(1,"1")
#=> [0,"1",2]
a += [3,4,5]
#=> [0,"1",2,3,4,5]
a.inspect
#=> "[0,\"1\",2,3,4,5]"
a.map!{|v| (v.is_a? Numeric)? v : v.to_i}
#=> [0,1,2,3,4,5]
a = a.join "-"
#=> "0-1-2-3-4-5"
a = a.split '-'
#=> ["0", "1", "2", "3", "4", "5"]
a | ["1", "6", "7"]

#=> ["0", "1", "2", "3", "4", "5", "6", "7"]


### And Strings... ###
str = " trop d'espace tue l'espace... "
#=> " trop d'espace tue l'espace... "
str = str.strip
#=> "trop d'espace tue l'espace..."
str.crypt "Oz" # "Oz" est le 'sel'
#=> "Oz2SDpLQ4HL02"
str.count "e"
#=> 5

### Finaly, the Object#extend method ###
module Mod
def homerize
p "Doh!"
end
end

class Simpson
extend Mod
end

Simpson.homerize
# "Doh !"
#=> nil

bart = Simpson.new
# bart can't homerize, unless...


bart.extend Mod
bart.homerize
# "Doh !"
#=> nil

1 commentaires:

Anonyme a dit…

abscons, voire abstrus...

suffit que je m'absente du oueurlde ouaïde ouèbe (je comprends pas pourquoi on dit www, d'ailleurs) pour que tu écrives des trucs imb..compréhensible pour moi...

ah ouais, c'est ton sujet de blog, c'est pas faux...