Что такое двойное подчеркивание в Perl?

Когда stride равно 1 (более типичное с сверткой, чем объединение), мы можем думать о следующем различии:

  • "SAME": размер вывода совпадает с размером ввода. Для этого требуется, чтобы окно фильтра проскальзывало внешнюю карту ввода, следовательно, необходимо проложить.
  • "VALID": окно фильтра остается в допустимой позиции внутри карты ввода, поэтому размер вывода уменьшается на filter_size - 1. Не выполняется прокладка.
5
задан brian d foy 7 November 2008 в 23:12
поделиться

7 ответов

Нет никакого определенного значения к использованию __ в имени переменной жемчуга. Это - вероятное предпочтение программиста, особенно в прецеденте, на который Вы сослались в своем вопросе. Вы видите больше информации о переменной жемчуга, называющей здесь.

11
ответ дан 18 December 2019 в 06:04
поделиться

Как в большей части подчеркивания языков просто часть идентификатора; никакое особое значение.

Но действительно ли Вы уверены, что это - Perl? На переменных нет никаких символов. Можно ли отправить больше контекста?

11
ответ дан 18 December 2019 в 06:04
поделиться

Ответ Mark's, конечно, корректен, он не имеет никакого особого значения.

Но я хочу отметить, что Ваш пример не похож на Perl вообще. Переменные Perl не являются barewords. У них есть символы, как Вы будете видеть из ссылок выше. И Perl не имеет "функций", он имеет подпрограммы.

Таким образом, может быть некоторый беспорядок, о котором языке мы говорим о.

1
ответ дан 18 December 2019 в 06:04
поделиться

Я - почти бесспорный arg2 __, размер является просто названием переменной.

1
ответ дан 18 December 2019 в 06:04
поделиться

Что касается интерпретатора, подчеркивание является просто другим символом, позволенным в идентификаторах. Это может использоваться в качестве альтернативы конкатенации или Camel-регистру для формирования идентификаторов многословных.

Начальный символ подчеркивания часто используется, чтобы означать, что идентификатор для локального использования только, например, для неэкспортируемых частей модуля. Это - просто конвенция; интерпретатор не заботится.

2
ответ дан 18 December 2019 в 06:04
поделиться

В контексте Вашего вопроса двойное подчеркивание не имеет никакого программного значения. Двойные подчеркивания действительно означают что-то специальное для ограниченного количества значений в Perl, прежде всего __FILE__ & __LINE__. Это специальные литералы, которые не снабжаются префиксом символ ($, % или @) и только интерполированы за пределами кавычек. Они содержат полный путь и название в настоящее время выполняющегося файла и строки, которая выполняется. Посмотрите раздел по 'Специальным Литералам' в perldata или этом сообщении на Монахах Perl

2
ответ дан 18 December 2019 в 06:04
поделиться

Вам нужно будет сообщить интерпретатору, что «$ arg2» - это имя переменной. а не "$ arg2__size". Для этого вам нужно будет использовать круглые скобки. (Это использование аналогично тому, что используется в оболочке).

Это должно работать MyFunction ($ arg1, $ {arg2} __ size, $ arg3)

- Бину

-1
ответ дан 18 December 2019 в 06:04
поделиться
Другие вопросы по тегам:

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