2013-07-12 3 views
-3

Je suis deviner que cette ligne:Perl - Que fait cette déclaration?

my $last = $last_game ? 1 : 0; 

assigne 1-$last si $last_game est true autrement $last obtient 0. Ai-je raison?

Merci

+5

oui correct, pourquoi vous ne l'essayez pas, btw vous assignant simplement des entiers pas la chaîne '1' pas'''' –

+1

Bien que si vous êtes intéressé à attribuer '0,1', alors vous pourriez simplement faites comme: 'my $ last = $ last_game || 0; ' –

+4

Cette question semble être hors sujet car elle est triviale OUI | AUCUNE question. –

Répondre

1

Oui, vous avez raison, il est un opérateur conditionnel ternaire.

De perldoc:

ternaires ":" est l'opérateur conditionnel, comme en C. Il fonctionne comme un if-then-else. Si l'argument avant le? est vrai, l'argument avant le: est retourné, sinon l'argument après le: est retourné. Par exemple:

printf "I have %d dog%s.\n", $n, 
    ($n == 1) ? "" : "s"; 
1

Il est un ternary Conditional operator. Cela fonctionne comme

COND? ALORS: AUTRE

Si la condition COND est vrai, seule la THEN expression est évaluée, et la valeur de cette expression devient la valeur de l'expression entière. Sinon, seule l'expression ELSE est évaluée et sa valeur devient la valeur de l'expression entière.