方案中这两个功能有什么区别吗?我正在使用 Drracket R5RS 语言制作模拟器游戏,我无法确定哪个更好。
最佳答案
有很大区别:map
返回包含对列表(或列表)的元素应用给定过程的结果的列表,而 for-each
返回无效。
> (for-each (λ (x) (add1 x)) '(1 2 3))
> (map (λ (x) (add1 x)) '(1 2 3))
'(2 3 4)
您使用
map
每当您需要计算结果并使用 for-each
当您对该程序的副作用感兴趣时。第二个重要区别是
for-each
保证给定的过程按顺序应用于元素。对于 map
,虽然返回的列表遵循原始列表的顺序,但不能保证调用是按顺序进行的。更多 here
关于map - Scheme中的for-each和map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475738/