понедельник, 29 марта 2010 г.

Тест на понимание Perl: идея и вопрос 1

Идея
Решил написать серию постов с вопросами на понимание  Perl. То есть каждый пост - отдельный вопрос.  Каждый такой пост будет содержать: вопрос, ответ, объяснение ответа.


Вопросы не будут содержать каких-либо редко используемых функций. Главное здесь проверить не знание функций, а понимание поведения Perl-кода.  Возможно многим они покажутся очевидными, но это говорит о том, что вы понимаете Perl ;)




Когда вопросов насобирается 20 штук - соберу все в один  тест. 

Вопрос 1
@a = 0; print 10 if @a 

Ответ: 10

Пояснение:  Все логические операции работают в скалярном контексте. В данном случае запись эквивалентна print 10 if scalar(@a)




5 коммент.:

Unknown комментирует...

Мне кажется, что более интересным есть тот факт что для перлы @a = 0; эквивалентно @a = ( 0 );
Хотя как по мне конструкция "@a = 0;" не совсем корректная, потому что не понятно, что разработчик хотел сделать.
Создается впечатление, что когда-то была переменная $a = 0 потом появилась необходимость использовать массив, и программист просто заменил знак $ на @.
Я бы не стал в своем коде использовать конструкции типа "@array = $scalar;"

koorchik комментирует...

Да есть в этой записи что-то настораживающие.
Создается ощущение, что
так мы получаем размер массива - "$scalar = @array", а так "@array = $scalar" - устанавливаем.

Хотя для установки размера массива мы должны написать что-то типа - "$#array = $scalar-1"

koorchik комментирует...

Можно и в отдельный вопрос выделить такое "@a = 0" присвоение, главное объяснить почему именно так оно должно работать:)

sromanov комментирует...

а Вы про УрГУ и Перл100 слышали?
посмотрите, там тоже немало интересного:
http://cs.usu.edu.ru/langs/perl/

koorchik комментирует...

Спасибо, реально интересные вещи есть

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

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