REBOL没有内置的方式来执行列表理解。然而,REBOL有一个强大的工具(称为parse),可以用来创建特定于域的语言(DSLs)。我使用parse创建了这样一个用于列表理解的迷你DSL。为了解释表达式,包含理解的块被传递给一个函数,因为缺少一个更好的术语,我称之为comprehend。
示例:
comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]出于某种原因,comprehend听起来不太对,但是像eval这样的东西太笼统了。
我还没有找到任何其他语言需要关键字或函数来理解列表。无论在哪里,它们都是纯粹的句法糖。不幸的是我没有这个选择。那么,既然我必须有一个函数,那么它有什么好的、简洁的、合乎逻辑的名称呢?
发布于 2009-02-01 21:44:15
select怎么样?
select [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
发布于 2009-02-01 21:25:30
因为列表理解可以被认为类似于映射,所以您可能会考虑将其称为"listmap“。或者,因为列表理解是基于set-builder表示法的,所以您可以将其称为“构建”或“构建列表”。
(免责声明:我对REBOL知之甚少,所以如果这些名字已经被取走,请原谅我)
发布于 2009-02-02 01:29:30
变形
https://stackoverflow.com/questions/204040
复制相似问题