Какова история + перед хеш-кодом, который устраняет неоднозначность из блока кода? - PullRequest
5 голосов
/ 24 октября 2009

Я хотел бы прочитать немного больше о +, который обычно ставится перед хеш-кодом, который помогает избавиться от неоднозначности в блоке кода.

  • Когда он был впервые представлен?

  • Кто первым это представил (рекомендовал)?

  • Как люди обошли проблему до того, как это было введено?

  • Какие-нибудь мелочи или заметки, которые приходят на ум при использовании этого синтаксиса?

1 Ответ

9 голосов
/ 24 октября 2009

Конкретный случай устранения неоднозначности кодового блока от анонимного конструктора hashref не может быть старше, чем анонимный конструктор hashref, который был добавлен в Perl 5.0 еще в 1993-4 годах. До этого проблема не существовала.

Но «унарный плюс» существует дольше - по крайней мере, начиная с Perl 4 (его не было в Perl 1, но он мог быть добавлен в любое время за последние несколько лет, насколько мне известно ). Он всегда делает одно и то же, заставляя его RHS оценивать как термин, а не что-либо еще, что может иметь смысл в контексте, и выделяя, например:

print (1 + 2), 42; # Does nothing useful with 42!

от

print +(1 + 2), 42; # Prints 3 and 42.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...