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)undefCes éléments sont faux :
FalseNone0""[]{}
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 :
falsenil@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
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