Wolfram mathematica 从MatchQ中提取匹配对象

Wolfram mathematica 从MatchQ中提取匹配对象,wolfram-mathematica,Wolfram Mathematica,为了便于学习,我正在尝试在Mathematica中实现自己版本的系数函数。这是我到目前为止写的: myCoefficient[fun_,var_,pow_] := Module[ {f,coeff}, f[var] = Expand[fun]; Map[ If[ MatchQ[#, a_ Power[var,pow] ], coeff=a] &, f[var]]; Map[ If[ MatchQ[#, Power[var,pow] ], coeff=1] &am

为了便于学习,我正在尝试在Mathematica中实现自己版本的
系数
函数。这是我到目前为止写的:

myCoefficient[fun_,var_,pow_] := Module[ {f,coeff},
    f[var] = Expand[fun];

    Map[ If[ MatchQ[#, a_ Power[var,pow] ], coeff=a] &, f[var]];
    Map[ If[ MatchQ[#, Power[var,pow] ], coeff=1] &, f[var]];

    Return[coeff];
]
我的问题是
如果[MatchQ[#,a_upower[var,pow]],coeff=a]
不返回
a
内部匹配的
MatchQ
,而是返回文本“a”


如何引用MatchQ匹配的内容?

我发现解决此问题的方法是在
If
语句中使用替换规则,如下所示:

Map[ If[ MatchQ[ #, a_. Power[var,pow] ], coeff = (# /. b_. Power[var,pow] -> b);] &, myexpr];

做你想做的事情的一种方法是使用

If[ Length[matchedparts = Cases[ expr , pattern :> result]]>0 , use(matchedparts), do something else ]

如果你正在学习Mathematica,我建议你不要选择这个网站,而是选择第二个动议。绝大多数数学家都搬到了那里。一对夫妇仍然经常出没,但他们非常罕见。谢谢你的建议