Защита идентификаторов от модификации
Защита идентификаторов от модификации
Атрибут защиты Protected
Как уже отмечалось, система Mathematica позволяет вводить константы, переменные и функции со своими именами — идентификаторами. Между функциями можно задавать различные отношения, в том числе и те, которые не соответствуют правилам, заданным в ядре системы. Идентификаторы должны быть уникальными, то есть не совпадать с именами встроенных функций, директив, опций, переменных и констант. Однако как быть, если нужно задать новое отношение для уже имеющихся встроенных функций или изменить их определения? Для решения таких вопросов в систему введена защита идентификаторов от модификации, которая при необходимости может сниматься. Все встроенные в ядро именованные объекты языка программирования системы являются защищенными по умолчанию. Они имеют соответствующий признак — атрибут Protected (защищенный).Установка и снятие атрибута защиты
Для управления средствами защиты от модификации используются следующие директивы:- Protect [s1, s2,...] — устанавливает атрибут защиты от модификации (Protected) для перечисленных символов si;
- Protect [\"forml\", \"form2\",...] — устанавливает атрибут защиты от модификации для всех символов, имена которых сопоставимы с любым из указанных строковых шаблонов f ormi;
- Unprotect [s1, s2,...] — удаляет атрибут защиты от модификации (Protected) для символов si, что делает возможной их модификацию;
- Unprotect [\"forml\", \"form2\",...] — снимает защиту всех символов, имена которых текстуально (по буквам) сопоставимы с любым из указанных formi.
Дополнительные функции защиты
Следующие атрибуты и директивы также используются при управлении модификацией:- NProtectedAll — атрибут, устанавливающий, что ни один из аргументов функции не будет модифицирован при применении N [ ];
- NProtectedFirst — атрибут, указывающий, что первый аргумент функции не будет модифицирован применением N [ ];
- NProtectedRest — атрибут, устанавливающий, что все аргументы после первого аргумента функции не будут модифицированы применением N [ ].