понедельник, 19 апреля 2010 г.

Тест на понимание Perl: Вопрос 3

Вопрос:
0 ? $a = 1: $b = 2;
1 ? $a = 1: $b = 2;
print "$a $b"

Ответ: 2 2 

Пояснение: 
Тут есть два важных момента:

  1. Приоритет тернарного оператора выше чем у "=" и поэтому конструкция работает так (0 ? $a = 1: $b) = 2;
  2. После вычесления тернарного оператора возвращается переменная, а не ее значение. И ее можно изменить.

Вот еще наглядный пример: 
конструкцию вида
if ( $x ) { 
    $a->{key} = 1;
}
else { 
    $b->{key} = 1; 
}
можно заменить на
($x ? $a : $b)->{key} = 1;

1 коммент.:

Анонимный комментирует...

Последний пример -- этакий jQuery-style в Перле :)

Отправить комментарий

Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)