Автор Тема: Константы в Perl  (Прочитано 5333 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Константы в Perl
« : 21 Июня 2002, 07:52:22 »
Продолжаю бороться за чистоту кода :)

Нужно ли вместо переменных, содержащих никогда неменяющееся значение:

$a="эта строка не изменится";
print $a;

использовать ссылку на значение-константу:

*a=\\"эта строка не изменится";
print $a;

?
Литературный перевод с русского и английского на Perl. Дорого!

  • Гость
Константы в Perl
« Ответ #1 : 21 Июня 2002, 13:27:29 »
Немного не понял зачем тебе все эти извращения. Нужна константа используй
use constant A => \'Это константа\'
или
sub A() {\'Это константа\'}

  • Гость
Константы в Perl
« Ответ #2 : 21 Июня 2002, 13:49:27 »
stah@banquet$ perl -e \'*q = \\"Это константа"; $q = "Не констана";\'
Modification of a read-only value attempted at -e line 1.

Если только для таких предупреждений, но опять же лучше use constant или sub q() {\'q\'}. Но надо отдать должное использование typeglobs выглядит более по-хакерски!!! :)

И еще не используй нигде переменные $a, $b Так как они зарезервированы.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Константы в Perl
« Ответ #3 : 23 Июня 2002, 05:58:52 »
Цитировать
Немного не понял зачем тебе все эти извращения.
Ну почему же? По-моему это - sub A() {\'Это константа\'} - еще большее извращение.

Цитировать
use constant A => \'Это константа\'

Такая константа не будет интерполироваться.

Цитировать
Если только для таких предупреждений

Почему нет? Очень ценные предупреждения :)

Цитировать
И еще не используй нигде переменные $a, $b Так как они зарезервированы.

А вот это не понял... Кем/чем??? C какой версии? Первый раз слышу.
Литературный перевод с русского и английского на Perl. Дорого!

  • Гость
Константы в Perl
« Ответ #4 : 24 Июня 2002, 11:50:49 »
use constant A => \'...\'; и  sub A() {\'..\'} практически одно и тоже.
Так вот sub A() оптимизируется во время компиляции в отличии от *q = \\\'...\';

Насчет ценных указаний, попробуй изменить A и тебя пошлют куда подальше.( чем не ценные указания :) )

Используй конкатенацию вместо интерполяции(она и работает быстрее)

Насчет зарезервированных переменных, посмотри на эти три кода:

stah@banquet$ perl -e \'use strict; $q = 1;\'
Global symbol "$q" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.

stah@banquet$ perl -e \'use strict; $a = 1;\'

stah@banquet$ perl -e \'use strict; $b = 1;\'

как ты думаешь почему последние 2 работают, а первый нет. Вот тебе и ответ на вопрос. perldoc -f sort

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Константы в Perl
« Ответ #5 : 26 Июня 2002, 00:34:52 »
Цитировать
Насчет ценных указаний, попробуй изменить A и тебя пошлют куда подальше.( чем не ценные указания  )
Так я и говорю: это полезно, когда на тебя ругаются :)
Цитировать
Используй конкатенацию вместо интерполяции(она и работает быстрее)
Знаю, но иногда ленюсь - символов больше :))
Цитировать
perldoc -f sort
- это освежило память, спасибо!
Литературный перевод с русского и английского на Perl. Дорого!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28