Ahankhah 发表于 2022-7-6 09:32:02

Mapcar缺点或我的已知

你好
众所周知,mapcad函数的语法如下:
 

(mapcar function list1... listn)

 
我的问题可以通过以下两个例子来解释:
 
(mapcar 'strcase '("a" "B" "c" "D"))
returns: ("A" "B" "C" "D")
 
(mapcar 'strcase '("a" "B" "c" "D") '(T T T T))
returns: ("a" "b" "c" "d")
 
是否有任何方法可以将重复的对象(这里T作为socond参数)传递给mapcar一次?

BlackBox 发表于 2022-7-6 09:47:30

 
*如果*您知道将使用T(True)作为所提供的有效字符串列表中每一项的Strcase函数的Which参数,那么使用Lambda应该可以做到这一点。
 
例子:
 

(mapcar
(function
   (lambda (str / string)
   (setq string (strcase str T))))
'("a" "B" "c" "D"))

Ahankhah 发表于 2022-7-6 09:53:02

很好的一个RenderMan-非常感谢:)。

Ahankhah 发表于 2022-7-6 10:11:51

代码可以更短:
 
(mapcar
(function
(lambda (str)
   (strcase str T)))
'("a" "B" "c" "D"))
 
再次感谢RenderMan

Lee Mac 发表于 2022-7-6 10:16:34

Mapcar在处理长度未知的列表时是理想的;如果需要为每个项提供其他常量参数,可以使用lambda函数(或用户定义的子函数),如图所示。
 
也许你已经阅读了本教程,该页面底部的链接也是一本不错的读物。

BlackBox 发表于 2022-7-6 10:24:24

 
欢迎光临。

Ahankhah 发表于 2022-7-6 10:41:19

谢谢李,
你是个很好的老师。
页: [1]
查看完整版本: Mapcar缺点或我的已知