Wolfram mathematica 功能体评价困惑

Wolfram mathematica 功能体评价困惑,wolfram-mathematica,Wolfram Mathematica,我对函数的以下行为感到困惑: In[1]:= InlineCellInMessage=Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}] Out[1]= Function[expr,MakeBoxes[expr,StandardForm]] 我希望在输出中看到函数中未计算的代码,如下例所示: In[2]:= InlineCellInMessage=Fu

我对
函数的以下行为感到困惑:

In[1]:= InlineCellInMessage=Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]
Out[1]= Function[expr,MakeBoxes[expr,StandardForm]]
我希望在输出中看到
函数
中未计算的代码,如下例所示:

In[2]:= InlineCellInMessage=Function[x,x+1+1]
Out[2]= Function[x,x+1+1]

但我在输出中得到内联单元格。为什么会发生这种情况?

这是前端渲染的结果。考虑:

InlineCellInMessage = 
  Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]

InlineCellInMessage // InputForm
输出:

InputForm[Function[expr, DisplayForm[Cell[BoxData[MakeBoxes[expr, StandardForm]], "Input"]], {HoldAll.Complete}]]
此外,在这种情况下,参数
HoldAllComplete
影响函数的未来输入,而不是函数本身的创建。如果希望
函数
本身具有
HoldAllComplete
功能,则需要:

SetAttributes[Function, HoldAllComplete]

尝试使用
InlineCellInMessage:=函数
interest,
HoldAllComplete[DisplayForm[Cell[BoxData[MakeBoxs[expr,StandardForm]],“Input”]]
。有没有办法控制这种行为?我不知道我们可以直接将属性设置为内置的
Protect
ed函数。谢谢你的观点!最直接的方法是像我一样使用
//InputForm
,但我认为您需要不同的行为。请具体说明。我只是想了解前端自动呈现的表达式类型。我发现即使是
HoldAllComplete[Style[DisplayForm[Cell[BoxData[makebox[expr,StandardForm]],“Input”]],Red]
也是自动呈现的。这对我来说是非常令人惊讶的,因为
Style
不是一个低级构造。另一方面,
makebox[expr,StandardForm]
不是
BoxData
的有效低级表达式。所有这些是如何工作的?当前端在标准格式单元格(例如)中找到
样式
表达式时,它会根据指示自动应用样式。这不仅限于
样式
,还包括
旋转
等说明。尝试:
HoldAllComplete[Rotate[Style[expr,Red],0.5]]