map - Scheme中的for-each和map

标签 map foreach scheme racket

方案中这两个功能有什么区别吗?我正在使用 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/

相关文章:

list - 如何返回1到x之间的数字列表

c# - 如何获取 foreach 循环当前迭代的索引?

javascript - stoppropagation 如何与循环一起使用?

c++ - 将 MSVS 2010 项目转换为 MSVS 2012 RC 但出现错误 "The C++ standard doesn' t 为此类型提供哈希”

Hadoop按时间顺序分区

c++ - 是否有 BOOST_FOREACH 的免 boost 版本?

方案 - 将 boolean 值转换为字符串?

functional-programming - Scheme:返回另一个内部过程的过程

map - 如何从 shapefile 的 .prj 文件中获取 Proj4 详细信息?

javascript - 禁用 anchor 跳