« Programmation Ruby/Types standards » : différence entre les versions
Contenu supprimé Contenu ajouté
Correction de nombreuses fautes orthographiques |
|||
Ligne 1 :
[[Programmation Ruby|<< Retour au sommaire]]
Nous allons voir ici
Pour rappel les méthodes
== Chaîne de caractères ==
Ligne 33 :
Un autre moyen de créer une chaine est d'utiliser ''%q'' ou ''%Q'', qui équivalent respectivement au simple et au double quote. Neanmoins l'utilisation de ''%q'' ou ''%Q'' permet de définir le caractère d'ouverture et de fermeture de la chaine :
%q!j'utilise le caractère \
%q*je peux utiliser n'importe quel caractère non alpha-numérique qui n'est pas dans la chaine elle même*
Si nous avons plusieurs lignes de texte à écrire nous pouvons utiliser les caractères ''<<'' suivit d'un identifiant pour créer une chaine ayant les mêmes propriétés qu'une chaine entre double quote, ou les
i = 100
Ligne 54 :
i vaut #{i}
Le dernier moyen d'obtenir une
42.to_s => "42"
Ligne 60 :
=== Comparaisons de chaînes ===
Les chaînes de caractères peuvent être comparées entre elles comme indiqués dans le chapitre [[Programmation Ruby Controle#Expressions booléennes|Expressions booléennes]] grace aux méthodes
"abcdef" <=> "abcde" => 1
"abcdef" <=> "abcdef" => 0
"abcdef" <=> "abcdefg" => -1
"abcdef" <=> "ABCDEF" => 1 # Les caractères
"abc" <=> "acc" => 1
Ligne 83 :
"a" != "b" => true
La méthode est équivalente à ''<=>'',
"abcdef".casecmp("ABCDEF") => 0
Ligne 93 :
===== length =====
''length'' permet de connaitre la taille d'une
"Bonjour le monde".length => 16
Ligne 99 :
===== index et rindex =====
''index'' renvoi l'index de la première occurence d'une sous
"hello".index('e') => 1
Ligne 111 :
Nous pouvons également utiliser une [[Programmation Ruby Types standards#Expression rationelle|expression rationelle]].
''rindex'' effectue le même travail à la différence près que la recherche se fait à partir de la fin de la
"Bonjour le monde".rindex('o') => 12
Ligne 119 :
"Bonjour le monde".rindex('o',9) => 4
A noté que si se second paramètre est négatif, alors l'index est compté à partir de la fin de la
"Bonjour le monde".rindex('o',-9) => 4
"Bonjour le monde".rindex('o',-2) => 12
==== Opérateurs sur les
===== * =====
L'opérateur de multiplication renvoie une chaine de caractères contenant ''n'' fois la
"Ho! " * 3 => Ho! Ho! Ho!
Ligne 133 :
===== + =====
L'opérateur d'addition permet de concaténer deux
maChaine = "le Monde"
Ligne 141 :
===== [] et []= =====
L'opérateur ''[]'' permet de récuperer un ou plusieurs caractères faisant parti d'une
Si un entier est passé en paramètre, l'opérateur renverra le code ascii du caractère correspondant (le premier caractère est
maChaine = "Bonjour le monde"
maChaine[3] => 106 #
Si deux entiers sont passés en paramètres, l'opérateur renverra une sous-
maChaine[1,5] => onjou
Ligne 156 :
maChaine[1..6] => onjou
Il est à noter que si l'index est négatif, ruby compte à partir de la fin de la
maChaine[-3,5] => nde
Ligne 162 :
On peut également utiliser une [[Programmation Ruby Types standards#Expression rationelle|expression rationelle]], nous verrons cela plus en détail dans le chapitre correspondant.
L'opérateur ''[]='' permet de changer le contenu d'une chaine de caractères. L'utilisation est semblable à celle de ''[]'', à la différence que
maChaine[3] = "V"
Ligne 178 :
puts maChaine => Bonjour Roger
On peut directement utiliser une
maChaine["Bonjour"] = "Hello"
Ligne 184 :
==== Formatage de
===== split =====
''split'' permet de séparer les différents éléments d'une
"Bonjour le monde".split => ["Bonjour", "le", "monde"]
Ligne 201 :
===== chomp, chomp!, chop et chop! =====
''chop'' et ''chop!'' permettent de supprimer le dernier caractère d'une
"Bonjour\r\n".chop => "Bonjour"
Ligne 214 :
"Bonjour le monde".chomp => "Bonjour \n le monde"
Si une
"Bonjour".chomp("jour") => "Bon"
"Bonjour\r\n".chomp("jour") => "Bonjour\r\n"
Pour rappel, les
===== downcase, downcase!, upcase, upcase!, swapcase, swapcase!, capitalize et capitalize! =====
Ligne 238 :
===== '''%''' =====
L'opérateur ''%'' permet de formater la
Les
{|border="1"
Ligne 251 :
| d ou i || nombre entier
|-
| e ||
|-
| E || comme ''e'' mais utilise le caractère majuscule ''E'' pour
|-
| f || nombre
|-
| g || comme ''e'' mais converti en nombre
|-
| G || comme ''E'' mais converti en nombre
|-
| o || nombre octal
Ligne 265 :
| p || symbole
|-
| s || chaine de caractères, si une précision est
|-
| u || nombre entier non signé (
|-
| x || hexadecimal en utilisant les caractères minuscules (par exemple ''f'')
|-
| X || hexadecimal en utilisant les caractères majuscules (par exemple ''F'')
|}
Ligne 287 :
| - || bdeEfgGioxXu || Ajoute un ''-'' au début des nombres négatifs
|-
| 0 || ''tous'' ||
|-
| . || ''tous'' || Prend l'argument suivant comme taille
|}
Ligne 325 :
| f || Considère ''sizeof(float)'' caractères comme un flotant|| Float
|-
| G || Considère ''sizeof(double)'' caractères comme un double dans l'ordre réseau || Float
|-
| g || Considère ''sizeof(float)'' caractères comme un flotant dans l'ordre réseau || Float
|-
| H || Extrait le code hexadécimal de chaque caractère (bit de poids fort en premier) || String
Ligne 341 :
| i || Considère 4 caractères consécutifs comme un entier long signé || Integer
|-
| M || Décode les
|-
| m || Décode les
|-
| N || Considère 4 caractères consécutifs comme un entier long non signé dans l'ordre réseau|| Fixnum
Ligne 349 :
| n || Considère 2 caractères consécutifs comme un entier court non signé dans l'ordre du réseau|| Fixnum
|-
| P || Considère ''sizeof(char *)'' comme un pointeur et renvoi la taille de la
|-
| P || Considère ''sizeof(char *)'' comme un pointeur sur une
|-
| S || Considère 2 caractères consécutifs comme un entier court non signé dans l'ordre natif du système || Fixnum
Ligne 357 :
| s || Considère 2 caractères consécutifs comme un entier court signé dans l'ordre natif du système || Fixnum
|-
| U || Extrait une
|-
| u || Extrait une
|-
| V || Considère 4 caractères consécutifs comme un entier long non signé en "little endian" || Fixnum
Ligne 369 :
| x || Avance d'un caractère || N/A
|-
| Z || Supprime les caractères ''null'' de fin || String
|-
| @ || Se déplace du nombre donné en argument || N/A
|}
La
Exemples :
Ligne 388 :
=== Itérateurs ===
Les itérateurs sont un mécanisme puissant de ruby, ils
==== succ, succ! et upto ====
''succ'' se contente de renvoyer l'élément succédant à la
"abcd".succ => "abce"
Ligne 399 :
"1999zzz".succ => "2000aaa"
''upto'' itère à travers les valeurs
"<<aa>>".upto("<<bb>>") do
Ligne 435 :
==== each_byte ====
''each_byte'' permet d'itérer à travers la
"bonjour".each_byte {|i| print i.to_s+" "} => 98 111 110 106 111 117 114
Ligne 456 :
== Valeur numérique ==
En ruby les valeurs numériques sont soit
Plus tôt dans le livre, nous avons indiqué qu'un type entier est de type ''Integer''
i = 10
Ligne 472 :
=== Syntaxe ===
En ruby une valeur numérique peut s'écrire de différente forme, notament en fonction de la base
Classiquement, une valeur numérique peut s'écrire comme une suite de
42 => 42
Ligne 493 :
4.class => Fixnum
Certains objets, comme l'objet ''String'',
" 58_87".to_i => 5887
Si la chaîne contient des éléments non
"toto".to_i => 0
Ligne 531 :
9/3 => 3
ATTENTION: Le type renvoyé est du type des
9/4 => 2
par contre, si nous utilisons
9.0/4
Une division par 0 lève une exception (nous verrons les exceptions plus tard, il suffit de considérer à l'heure actuelle qu'il s'agit d'une erreur) et
9/0 => ZeroDivisionError: divided by 0
Ligne 545 :
==== ** ====
L'opérateur ''**'' permet d'augmenter une valeur numérique à la puissance
9**2 => 81
Ligne 558 :
=== Itérateurs ===
La classe ''Integer '' propose également certains itérateurs, comme pour tout
==== succ ====
Ligne 577 :
==== upto et downto ====
''upto'' et ''downto''
5.upto(8) do |i| print i.to_s+'..' end
Ligne 590 :
==== step ====
''step'' ressemble à ''upto'' et ''downto'' à part que l'on peut
5.step(48, 5) do |i| print i.to_s+'..' end #ici le second paramètre
=> 5..10..15..20..25..30..35..40..45..
== Expression rationelle ==
Les expressions rationelles (également
Ruby propose une classe pour l'utilisation des expressions rationelles, les développeurs perl seront heureux car son utilisation en ruby est quasi-identique.
|