Почему переменные Perl должны начинаться с $,%, @ (сигилы)?

Я столкнулся с тем же вопросом. Мое решение состояло в том, чтобы использовать рефлексию для изучения всех методов класса ObjectFactory, исключая те методы, которые не были createXXX (), возвращающие экземпляр одного из моих связанных POJO. Каждый обнаруженный класс добавляется в массив Class [], который затем передается в экземплярный вызов JAXBContext. Это хорошо работает, нужно только загрузить класс ObjectFactory, который все равно понадобился. Мне нужно только поддерживать класс ObjectFactory, задачу, выполняемую вручную (в моем случае, потому что я начал с POJO и использовал схему), или может быть сгенерирован по необходимости xjc. В любом случае, он эффективен, прост и эффективен.

23
задан benrifkah 3 August 2011 в 18:23
поделиться

6 ответов

Когда я начинал использовать Perl, мне объяснили, что эти символы были выбраны потому, что:

  • $ немного походил на 's', так что это было для s каларов,
  • @ имеет букву «a» в середине, так что это было для a rrays, а
  • % было для хэшей, потому что это выглядело как пара ключ-значение, разделенная косой чертой.
60
ответ дан 29 November 2019 в 00:36
поделиться

Это потому, что Perl использует сигилы : ​​

В компьютерном программировании сигилы (произносится /'sɪdʒ.ɪl/ или /'sɪg.ɪl/; множественное число sigilia или sigils) является символом прикреплен к имени переменной, показывая тип данных или область видимости переменной. В термин был впервые применен к использованию Perl Филиппа Гвина в 1999 году, чтобы заменить более громоздкий "забавный персонаж в перед именем переменной ". Имя на основе слова, означающего волшебный символ (см. сигил (магия)).

35
ответ дан 29 November 2019 в 00:36
поделиться

http://www.wall.org/~larry/natural.html :

В английском языке используются числа и порядок слов с остатками падежной системы в местоимениях: " Мужчина посмотрел на мужчин, и они снова посмотрели на него ". В этой фразе совершенно ясно, кто и кому что делает. Точно так же в Perl есть числовые маркеры на существительных; то есть $ dog - это один пес, а @dog (потенциально) - много. Итак, $ и @ немного похожи на «это» и «эти» в английском языке.

11
ответ дан 29 November 2019 в 00:36
поделиться

Несколько причин объяснены Ларри Уоллом и другими в «Программировании Perl»:

В любом заданном пространстве имен [...] каждый тип переменной имеет свое собственное пространство имен , определяется забавным персонажем. Вы можете, не опасаясь конфликта, использовать одно и то же имя для скалярной переменной, массива или хэша (или, если на то пошло, дескриптора файла, подпрограммы, метки или вашего домашнего ламы).

[...]

Как и большинство компьютерных языков, Perl имеет список зарезервированных слов, которые он распознает как специальные ключевые слова. Однако, поскольку имена переменных всегда начинаются с забавного символа, зарезервированные слова на самом деле не конфликтуют с именами переменных.

22
ответ дан 29 November 2019 в 00:36
поделиться
  • Поскольку Perl был предназначен для замены сценариев оболочки, а переменные в оболочке начинаются с $ .
  • Чтобы различать между скалярами ( $ ), массивами ( @ ) и хэшами (% ).
11
ответ дан 29 November 2019 в 00:36
поделиться

Не все из них работают, некоторые начинаются с% (хешей) или с помощью @ (массивов).

Помечать их как переменные, а также обозначать их тип - это дизайнерское решение.

Обратите внимание, что вы можете иметь как $ abc , так и % abc .

Ознакомьтесь с руководством по переменным Perl .

2
ответ дан 29 November 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: