Wolfram mathematica 与某些图案不同的匹配头
我想匹配谁的头不同于f的表达式 这很有效Wolfram mathematica 与某些图案不同的匹配头,wolfram-mathematica,Wolfram Mathematica,我想匹配谁的头不同于f的表达式 这很有效 [In] !MatchQ[t[3], x_ /; Head[x] == f] [Out] True 但不是这个 [In] MatchQ[t[3], x_ /; Head[x] != f] [Out] False 为什么第二种解决方案不起作用?如何使其工作?为什么不工作:您必须使用==(),而不是=()用于结构比较: In[18]:= MatchQ[t[3],x_/;Head[x]=!=f] Out[18]= True 通过评估,可以看出原因
[In] !MatchQ[t[3], x_ /; Head[x] == f]
[Out] True
但不是这个
[In] MatchQ[t[3], x_ /; Head[x] != f]
[Out] False
为什么第二种解决方案不起作用?如何使其工作?为什么不工作:您必须使用
==代码>(),而不是=代码>()用于结构比较:
In[18]:= MatchQ[t[3],x_/;Head[x]=!=f]
Out[18]= True
通过评估,可以看出原因:
In[22]:= Head[t[3]]!=f
Out[22]= t!=f
运算符==
(Equal
)和=当无法确定双方平等(或不平等)的事实时,代码>(不平等
)对自己进行评估。这在符号环境中是有意义的。我更详细地考虑了这个主题,其中还讨论了SameQ
和UnsameQ
还有更优雅的方式来表达相同的模式,这也将更有效,例如:
MatchQ[t[3],Except[_f]]
相关SO问题:,以及