我想知道如何编写一个在Apply
Mathematica 中的函数?例如,我想简单地重新实现Or
函数,我发现了以下内容
Apply[(#1 || #2)&,{a,b,c}]
不行,因为它只是Or
'ed 列表中的前两个元素。非常感谢!
无论有多少变量,这都会起作用,并且是通用模式:
Or[##]&,
例如
In[5]:= Or[##] & @@ {a, b, c}
Out[5]= a || b || c
然而,在以下情况下Or
,这还不够好,因为Or
is HoldAll
和短路 - 也就是说,它首先停止True
声明,其余部分不予评估。例子:
In[6]:= Or[True, Print["*"]]
Out[6]= True
In[7]:= Or[##] & @@ Hold[True, Print["*"]]
During evaluation of In[7]:= *
Out[7]= True
不过这样就可以了:
Function[Null,Or[##],HoldAll],
例如,
In[8]:= Function[Null, Or[##], HoldAll] @@ Hold[True, Print["*"]]
Out[8]= True
并且可以在这种情况下使用(当您不希望评估您的参数时)。请注意,这使用了未记录的形式Function
。关于这种形式的提及可以在 R.Maeder 的《Programming in Mathematica》一书中找到。
HTH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)