Les informations Perl et Ruby de cette page sont certifiées incomplètes voire fausses par incompétence du premier éditeur de la page. Ceci est une invitation aux personnes compétentes à modifier la page. Cette page est de toute façon incomplète en dehors de ça.
[la mise en page en tableau me semble assez inmaintenable, des sections sont donc utilisées pour l'instant]
Ces éléments sont faux :
0
""
()
(car il est converti en le scalaire 0)undef
Ces éléments sont faux :
False
None
0
""
[]
{}
Le comportement d'un objet peut être changé en modifiant sa méthode __nonzero__
ou sa méthode __len__
(dans cet ordre)
Ces éléments sont faux :
false
nil
@a = (); @a=(1, "2", 3);
$a = []; $a = [1, "2", 3];
%a = ("clef", "valeur", 1, "2")
OU (écriture moins relou, plus lisible et plus maintenable) : %a = ( clef => "valeur", 1 => "2");
$a = {clef=>"valeur", 1 => "2"}
[]
, [1, "2", 3]
()
, (1,)
(notez le tuple-singleton), (1, "2", 3)
{"clef": "valeur", True: 3}
None
[]
, [1, "2", 3]
{"clef", "valeur", 1, "2"}
if (condition) { } elsif (condition) { } else { }
On ne fait pas
if (condition) code;
Mais
code if (condition);
unless peut être utilisé en cas de logique inversée if not condition ou if ! condition. La différence entre ! et not est juste la priorité des operateurs voir perlop(1)
if (!condition) == if (not(condition)) == unless(condition) code if (!condition) == code if(not(condition)) == code unless(condition)
Modification : TIMTOWTDI (There Is More Than One Way To Do It)
if condition: # code elif condition: # code else: # code
Les retours à la ligne sont fortement recommandés.
On peut aussi faire
if condition: une_ligne elif condition: une_ligne else: une_ligne
comme pour les autres langages, mais cette pratique n'est pas recommandée
Notation ternaire
x = 1 if True else 2
if condition then # code elsif condition then # code else # code end
Les then
sont facultatifs si l'on a des retours à la ligne.
notation “ternaire” implicites, car Ruby contient beaucoup d'“expressions” (à opposer aux “instructions”)
for my $i (1..N) { #code }
for i in xrange(N): # code
N.times { |i| # code }
ou
N.times do |i| # code end
sub mafonction { # les arguments sont dans @_ ($a, $r, $g, $uments) = @_; }
def mafonction(a, r, g, uments): # code
def mafonction(a, r, g, uments) # code end