我想知道如何编写一个在 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
是 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
关于wolfram-mathematica - 我应该如何编写一个在 Mathematica 中应用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867076/