Как работает запятая в Perl?
Вопрос
В настоящее время я изучаю программирование Perl и сталкиваюсь с такими утверждениями:
return bless { }, $type;
я знаю что return bless { };
сделал бы, и я также знаю, что return $type;
Подойдет, но как разделение их запятыми влияет на утверждение, и работает ли оно одинаково для всех унаральных операторов?
Решение
благословить не является унагорным оператором, так что происходит то, что $type
передается bless
(где он используется в качестве имени класса, чтобы благословить хашреф).
Единственное, что особенное в возвращаться заключается в том, что выражение на его правой руке может быть оценено в списке, скалярном или недеймом контексте в зависимости от контекста, в котором была вызвана подпрограмма.
А оператор запятой не интерпретируется по -другому в return
утверждение, чем было бы где -нибудь еще (за исключением того, что вы не можете сказать, находится ли он в списке или скалярном контексте, посмотрев на return
утверждение).
Другие советы
Предопределенные функции Perl могут быть вызваны с или без скобок. Большинство людей, приходящих из других языков, путают эти функции для ключевых слов/операторов.
Благослови, Undef, Push, POP, Shift, Unseift, Print, Split, Join и т. Д. - все это функции.
Следовательно, эти два эквивалентны:
return bless { }, $type;
return bless({ }, $type);
Но эти двое не:
print 2 * 3 + 2; # prints 8
print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)