Почему переменные Perl должны начинаться с разных символов (sigils)?
-
Скалярные переменные начинаются с
$
-
Хеши начинаются с
%
-
Массивы начинаются с
@
Почему они такие?
Почему переменные Perl должны начинаться с разных символов (sigils)?
Скалярные переменные начинаются с $
Хеши начинаются с %
Массивы начинаются с @
Почему они такие?
Когда я начал использовать Perl, мне объяснили, что эти символы выбраны потому, что:
$
выглядел немного как "s", так что это было для s calars,@
имеет 'a' в середине, так что это было для a rrays и%
был для хэшей, потому что он выглядел как пара ключ-значение, деленная на косую черту.Это потому, что Perl использует sigils:
В компьютерном программировании сигила (произносится как/'sɪdʒ.ɪl/или/'sɪg.ɪl/; множественная сигилия или сигилы) является символом прикрепленный к имени переменной, показывающий переменный тип данных или область видимости. термин впервые был применен к использованию Perl Филиппом Гвином в 1999 году, чтобы заменить более громоздкий "забавный персонаж в перед именем переменной". на основе слова, означающего магический символ (см. сигил (магия)).
Несколько причин: объяснено Ларри Уолл и др. в "Программирование Perl":
В любом пространстве имен [...] каждый тип переменной имеет свое собственное пространство поднаборов, определенное смешным символом. Вы можете без страха конфликта использовать одно и то же имя для скалярной переменной, массива или хэша (или, если на то пошло, дескриптора файла, подпрограммы, метки или вашего любимого ламы.)
[...]
Как и большинство языков компьютера, Perl имеет список зарезервированных слов, которые он распознает как специальные ключевые слова. Однако, поскольку имена переменных всегда начинаются со смешного символа, зарезервированные слова фактически не конфликтуют с именами переменных.
http://www.wall.org/~larry/natural.html:
Английский использует число и порядок слов, с остатками системы case в местоимениях: "Человек посмотрел на мужчин, и они оглянулись на него". В этом предложении совершенно ясно, кто что делает, кому. Точно так же Perl имеет числовые маркеры в своих существительных; то есть $dog - это один pooch, а @dog (потенциально) много. Таким образом, $и @немного похожи на "this" и "these" на английском языке.
$
.$
), массивы (@
) и хэши (%
).Не все из них, некоторые начинаются с% (хэши) или с @(массивы).
Это дизайнерское решение для обозначения их как переменных, а также их тип.
Обратите внимание, что вы можете иметь как $abc
, так и %abc
.
Просмотрите руководство по Perl-переменным.