Вопрос

В настоящее время я изучаю программирование 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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top