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]]