2

我想定义一个通用函数来从地图中提取键,如下所示:

public list[K] keys(map[K,V] aMap) {
    return [ key | key:val <- aMap ];
}

虽然没有给出语法错误,但这不起作用。有没有办法做到这一点?

4

1 回答 1

2

您可以将其定义为

public list[&K] keys(map[&K,&V] aMap) {
    return [ k | k <- aMap ];
}

请注意,键是无序的,因此将它们作为集合而不是列表返回可能更有意义。您还可以通过将键或值直接投影到地图外,使用以下任一方法直接将键或值作为集合取出

aMap<0>

对于一组键或

aMap<1>

为一组值。最后,Set 模块包含一个 toList 函数,因此您可以在一行中执行此操作

toList(aMap<0>)

这将为您提供与调用 keys 函数相同的结果。

于 2013-09-10T14:14:37.980 回答