2013-07-12 2 views
-3

Я думаю, что эта линия:Perl - Что делает этот поступок?

my $last = $last_game ? 1 : 0; 

ли назначение 1 к $last если $last_game является true иначе $last получает 0. Я прав?

Благодаря

+5

Да, правильно, почему вы его не пытаетесь, кстати, вы присваиваете просто целые числа, а не строку '1' not' '1'' –

+1

Хотя, если вам интересно назначить '0,1', вы могли бы просто do like: 'my $ last = $ last_game || 0; ' –

+4

Этот вопрос не соответствует теме, потому что это тривиально. ДА | НЕТ вопроса. –

ответ

1

Да, вы правы, это тройной условный оператор.

От perldoc:

троичной «:» это условный оператор, так же, как в C. Он работает очень как если-то-иначе. Если аргумент перед? true, возвращается аргумент перед:: в противном случае возвращается аргумент после:. Например:

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

Это ternary Conditional operator. Он работает как

COND? ТОГДА: ELSE

Если условие COND верно, только ТОГДА выражение вычисляется, и значение этого выражения становится значением всего выражения. В противном случае оценивается только выражение ELSE, и его значение становится значением всего выражения.