繁体   English   中英

输入列表到纯函数

[英]Input list to a pure function

纯函数的语法类似于(1+#1+#2)&[a,b] ,它给出1+a+b 现在我想提供一些看起来像{a,b}的函数的输出到上面的函数,即类似于(1+#1+#2)&{a,b} ,但语法正确,如这显然不起作用。 我该怎么做呢?

最简单的方法是使用Apply@@ ):

In[4]:= (1 + #1 + #2) & @@ {a, b}

Out[4]= 1 + a + b

要提供一些替代方法,如果更方便的话,还可以在函数中包含Apply

f = (1 + # + #2) & @@ # &;

f @ {a, b}
1 + a + b

(可选)您可以手动索引零件:

f = (1 + #[[1]] + #[[2]]) &;

最后,您可能已经知道这一点,但对于其他人来说,这个问题:

g[{x_, y_}] := 1 + x + y

g @ {a, b}
1 + a + b

这是一个普通函数的版本(即可以使用方括号),它将采用任意列表。 Apply已在函数内移动, ##表示SlotSequence (模式匹配中的cf ___

In[1]:= (1 + ##&@@ #) &[{a, b}]
        (1 + ##&@@ #) &[{a, b, c, d, e}]

Out[1]= 1 + a + b

Out[2]= 1 + a + b + c + d + e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM