rascal - 如何从流氓地图中获取所有键?
问题描述
假设我有一张这样的地图:
map[str,int] a = ("apple": 1, "pear": 2, "banana": 3, "kiwi": 4);
有没有办法返回地图中的所有键,即“apple”、“pear”、“banana”、“kiwi”?从http://tutor.rascal-mpl.org/Rascal/Expressions/Values/Map/Comprehension/Comprehension.html#/Rascal/Expressions/Values/Map/Map.html的文档来看,似乎没有内置的方式。可能吗?
解决方案
多种方式:
首先只是突出第一列:
rascal>map[str,int] a = ("apple": 1, "pear": 2, "banana": 3, "kiwi": 4);
map[str, int]: ("banana":3,"pear":2,"kiwi":4,"apple":1)
rascal>a<0>
set[str]: {"banana","pear","kiwi","apple"}
其次是标记列,并做同样的事情(<>
符号或.
符号)
rascal>map[str fruit, int count] b = ("apple": 1, "pear": 2, "banana": 3, "kiwi": 4);
map[str fruit, int count]: ("banana":3,"pear":2,"kiwi":4,"apple":1)
rascal>b<fruit>
set[str]: {"banana","pear","kiwi","apple"}
rascal>b.fruit
set[str]: {"banana","pear","kiwi","apple"}
最后,地图也是它们自己的键的生成器,如下所示:
rascal>[ f | f <- a]
list[str]: ["banana","pear","kiwi","apple"]
rascal>{ f | f <- a}
set[str]: {"banana","pear","kiwi","apple"}
rascal>import IO;
rascal>for (f <- a)
>>>>>>> println(f);
banana
pear
kiwi
apple
推荐阅读
- bash - 如何扩展包含文本和其他变量混合的变量?
- sorting - 如何按两个元素在 OCAML 排序中排序
- laravel - 带有租赁包的 Laravel 如何使用子域
- javascript - 带有 axios 的 array.map 的 Promise.all
- seo - 站点爬虫从单个页面返回多个 404,其中内部 href 附加在 url 的末尾?上下文见正文
- java - 如何编写写入 Azure SQL 的 Java Azure 函数?
- bash - 打开终端时出错:未知。(kubectl exec pod -it bash)
- c - C 语言 - 指针和强制转换
- swift - CoreData 与同一实体的关系
- ruby-on-rails - 在 Rails 6 中默认清除 blob