对函数体评估感到困惑
我对 Function
的以下行为感到困惑:
In[1]:= InlineCellInMessage=Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]
Out[1]= Function[expr,MakeBoxes[expr,StandardForm]]
我希望在输出中看到 Function
内未评估的代码,如下例所示:
In[2]:= InlineCellInMessage=Function[x,x+1+1]
Out[2]= Function[x,x+1+1]
但我在输出中得到了内联单元格。为什么会出现这种情况?
I am puzzled by the following behavior of Function
:
In[1]:= InlineCellInMessage=Function[expr,DisplayForm[Cell[BoxData[MakeBoxes[expr,StandardForm]],"Input"]],{HoldAllComplete}]
Out[1]= Function[expr,MakeBoxes[expr,StandardForm]]
I expected to see unevaluated code inside Function
in the output as in the following case:
In[2]:= InlineCellInMessage=Function[x,x+1+1]
Out[2]= Function[x,x+1+1]
But I get the inline cell inside output. Why does this happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是前端渲染的结果。考虑:
输出:
此外,在此使用中,参数
HoldAllComplete
影响函数的未来输入,而不是函数本身的创建。如果您希望 Function 本身具有 HoldAllComplete 您需要:This is the result of FrontEnd rendering. Consider:
Output:
Also, in this use the parameter
HoldAllComplete
affects future input to the function, not the creation of the function itself. If you wantFunction
itself to haveHoldAllComplete
you need: