【问题标题】:How to get all keys from a Rascal map?如何从流氓地图中获取所有键?
【发布时间】:2018-11-29 14:19:13
【问题描述】:

假设我有一张这样的地图:

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


【解决方案1】:

多种方式:

First 只是突出第一列:

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"} 

其次是标记列,并做同样的事情(&lt;&gt; 表示法或 . 表示法)

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

【讨论】:

  • 完美!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
相关资源
最近更新 更多