我想定义一个通用函数来从 map 中提取键,如下所示:
public list[K] keys(map[K,V] aMap) {
return [ key | key:val <- aMap ];
}
虽然没有给出语法错误,但这不起作用。有办法做到吗?
最佳答案
您可以将其定义为
public list[&K] keys(map[&K,&V] aMap) {
return [ k | k <- aMap ];
}
请注意,键是无序的,因此将它们作为集合而不是列表返回可能更有意义。您还可以使用以下任一方法将键或值直接投影到 map 之外,从而将它们作为集合直接获取:
aMap<0>
按键组或
aMap<1>
代表一组值。最后,Set 模块包含一个 toList 函数,因此您可以在一行中执行此操作,如下所示
toList(aMap<0>)
这将为您提供与调用keys函数相同的结果。
关于rascal - 如何在 Rascal 中定义通用(多态)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18720152/