-
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 и т.д.