C'è un mucchio di cose là fuori, dato che Perl è un linguaggio piuttosto zuccherino, ma le affermazioni più usate in qualsiasi lingua sono la combinazione di istruzioni if e valori di impostazione. Penso di aver trovato molti di loro, ma ci sono ancora alcune lacune. In definitiva, l'obiettivo sarebbe quello di non dover scrivere un nome di variabile più di una volta:Che tipo di zucchero sintattico è disponibile in Perl per ridurre il codice per operatori l/valore rvalore e se le istruzioni?
Ecco cosa ho finora:
$r ||= $s; # $r = $s unless ($r);
$r //= $s; # $r = $s unless (defined $r);
$r &&= $s; # $r = $s if ($r);
$r = $c ? $s : $t; # if ($c) { $r = $s } else { $r = $t }
$c ? $r : $s = $t; # if ($c) { $r = $t } else { $s = $t }
$r = $s || $t; # if ($s) { $r = $s } else { $r = $t }
$r = $s && $t; # if ($s) { $r = $t } else { $r = $s = undef, 0, untrue, etc. }
$c and return $r; # return $r if ($c);
$c or return $r; # return $r unless ($c);
$c and $r = $s; # $r = $s if ($c);
@$r{qw(a b c d)} # ($r->{a}, $r->{b}, $r->{c}, $r->{d})
Qualcuno aveva anche una really interesting article su un "operatore segreto", mostrata qui :
my @part = (
'http://example.net/app',
('admin' ) x!! $is_admin_link,
($subsite) x!! defined $subsite,
$mode,
($id ) x!! defined $id,
($submode) x!! defined $submode,
);
Tuttavia, quello che ho trovato per essere manca dalla lista è:
$r <= $s; # read as "$r = min($r, $s);" except with short-circuiting
$r = $s if (defined $s); # what's the opposite of //?
$r and return $r # can that be done without repeating $r?
C'è qualcos'altro da aggiungere? Quali altre variabili di set condizionali sono disponibili per ridurre il codice? Cos'altro manca?
'$ c && $ r = $ s' ha bisogno di un po 'di zucchero in più (devi dire '($ r = $ s)') – mob
@mob, temo che sia piuttosto amaro per l'OP :-) – TMS
'$ r =! $ s? $ s: $ t' è la stessa cosa di '$ r = $ s && $ t' – mob