Spec-Zone.ru › Perl 5.38

стабильный

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • ВЕРСИЯ
  • СИНОПСИС
  • ОПИСАНИЕ
  • СМОТРИТЕ ТАКЖЕ
  • АВТОР
  • АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

НАЗВАНИЕ

stable - Экспериментальные функции, ставшие простыми, как только мы убедились в их стабильности

ВЕРСИЯ

версия 0.031

СИНОПСИС

use stable 'lexical_subs', 'bitwise';
my sub is_odd($value) { $value & 1 }

ОПИСАНИЕ

Предикат experimental упрощает включение экспериментальных возможностей и отключение связанных предупреждений. Вам следует ознакомиться с ним, если вы ещё не знаете, что он делает.

Видеть use experimental в коде может быть пугающе. На самом деле, так оно и должно быть! Код, использующий экспериментальные функции, может сломаться в будущем, если команда разработчиков Perl решит изменить эксперимент. Когда эксперименты становятся стабильными, потому что разработчики считают их успешными, предупреждения, связанные с ними, исчезают. В этом случае, обычно их можно включить с помощью use feature.

Это здорово, если вы используете версию Perl, где необходимая функция уже стабильна. Однако, если вы используете более старую версию Perl, возможно, вы захотите использовать экспериментальную функцию, которая по-прежнему выдаёт предупреждения, даже если её использование не несёт рисков, так как в последующих версиях Perl эта функция осталась неизменной и теперь стабильна.

Вот пример: функция postderef была добавлена в Perl 5.20.0. В Perl 5.24.0 она была отмечена как стабильная. Её использование больше не будет вызывать предупреждений. Поведение функции не изменилось между 5.20.0 и 5.24.0. Это означает, что функцию можно безопасно использовать на 5.20 или 5.22, даже несмотря на предупреждение.

В таком случае, вы вполне обоснованно можете добавить use experimental 'postderef', но внимательный читатель всё равно может волноваться, увидев это. Предикат stable существует для включения экспериментальных функций только тогда, когда известно, что их поведение в текущей версии Perl соответствует стабильному поведению.

Если вы попытаетесь использовать экспериментальную функцию, которая не является стабильной или недоступна в текущей версии Perl, будет выброшено исключение. Также следует убедиться, что вы подключили необходимую версию stable.

Если неясно, почему, вот объяснение:

  • stable входит в состав Perl, начиная с версии Perl v5.38.

  • Представьте, что v5.38 добавляет функцию «florps». Она перестанет быть экспериментальной в v5.42.

  • Версия stable, которая входит в Perl v5.38, не может знать, что эксперимент «florps» будет успешным, поэтому вы не можете use stable 'florps' в версии стабильной, поставляемой с v5.38, потому что она не может видеть будущее!

  • Вам нужно будет написать use stable 1.234 'florps', чтобы указать, что вам нужна версия 1.234 стабильной, которая соответствует моменту, когда «florps» стала стабильной.

Конечно, это немного необычно, но это того стоит! В документации этого предиката указано, какую версию stable вам нужно подключить, чтобы использовать различные функции. Смотрите ниже.

В настоящее время есть только несколько «стабильных» функций:

  • bitwise - стабильна начиная с Perl 5.22, доступна через stable 0.031

  • isa - стабильна начиная с Perl 5.32, доступна через stable 0.031

  • lexical_subs - стабильна начиная с Perl 5.22, доступна через stable 0.031

    Лексические подпрограммы были на самом деле добавлены в 5.18, и их дизайн не изменился, но существенные ошибки делают их небезопасными для использования до 5.22.

  • postderef - стабильна начиная с Perl 5.20, доступна через stable 0.031

СМОТРИТЕ ТАКЖЕ

perlexperiment содержит более подробную информацию об экспериментальных функциях.

АВТОР

Leon Timmermans <leont@cpan.org>

АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ

Данное программное обеспечение является собственностью (c) 2013 года Leon Timmermans.

Это свободное программное обеспечение; вы можете распространять и/или изменять его на тех же условиях, что и систему программирования Perl 5.

© 1993–2023 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.38.0/stable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API