-
Defer[] -
Unevaluated[] -
HoldForm[]
Иногда мне все еще сложно выбирать между этими параметрами (и, судя по ответам на перед упомянутым вопросом, выбор не всегда ясен и для других людей). Может ли кто-нибудь написать четкое изложение об использовании этих трех методов?
Есть три других обертки
Hold[]
HoldPattern[]
HoldComplete[],
и различные функции Attributes для функций
HoldAll, HoldFirst, HoldRest и числовые версии NHold*, которые также могут быть обсуждены, если хотите!
Изменить
Я только заметил, что это в основном повторение старого вопроса (который я уже сохранил, только что забыл...). Принятый ответ, связанный с этот разговор на конференции разработчиков Mathematica 1999 года, которая не обсуждает Defer, так как это "Новое в 6", Defer более тесно связан с интерфейсом, чем другие механизмы управления оценкой. Он используется для создания неоцененного вывода, который будет оцениваться, если он указан в выражении Input. Чтобы процитировать Центр документации:
Defer [expr] возвращает объект, который остается неизменным до тех пор, пока явно предоставлен как Mathematica ввода и Shift + Enter, Evaluate in Place и т.д.