由于NIM与Python共享许多特性,因此如果它也实现了Python's list comprehension我不会感到惊讶:

string = "Hello 12345 World"
numbers = [x for x in string if x.isdigit()]
# ['1', '2', '3', '4', '5']

这在尼姆真的是可能的吗?如果没有,是否可以用模板/宏实现?

最佳答案

更新:自0.19.9版(Source)以来,列表理解已被弃用。
列表理解在NIM中的sugar package中实现(即,您必须import sugar)。它被实现为一个名为lc的宏,并允许编写如下列表理解:

lc[x | (x <- 1..10, x mod 2 == 0), int]

lc[(x,y,z) | (x <- 1..n, y <- x..n, z <- y..n, x*x + y*y == z*z), tuple[a,b,c: int]]

请注意,宏需要指定元素的类型。

10-07 20:26