Map 如何在Rascal中强制转换要映射的值类型?

Map 如何在Rascal中强制转换要映射的值类型?,map,rascal,Map,Rascal,我有一个类型为value的变量,用于存储映射,但我无法通过提供键来访问这些值: rascal>a value: ("s":"s") rascal>a["s"] |stdin:///|(2,3,<1,2>,<1,5>): subscript not supported on value at |stdin:///|(2,3,<1,2>,<1,5>) ☞ Advice rascal>a 价值:(“s”:“s”) 流氓>a[“s”] |s

我有一个类型为value的变量,用于存储映射,但我无法通过提供键来访问这些值:

rascal>a
value: ("s":"s")

rascal>a["s"]
|stdin:///|(2,3,<1,2>,<1,5>): subscript not supported on value at |stdin:///|(2,3,<1,2>,<1,5>)
☞ Advice
rascal>a
价值:(“s”:“s”)
流氓>a[“s”]
|stdin://|(2,3,,):在| stdin://|(2,3,,)处的值上不支持下标
☞ 忠告
如何解析要映射的值以检索我的值?

if(map[str,str]myMap:=a){
if (map[str,str] myMap := a) {
   // do stuff with myMap
}
else {
  throw "<a> is not a map?";
}
//用我的地图做事 } 否则{ 抛出“不是地图吗?”; }
首先有一个问题是如何获得此映射:-),因此您还可以防止这种情况发生,例如,当您使用
readTextValueFile(#map[str,str],myLoc)从磁盘读取值时。这将保证返回值的类型为
map[str,str]
,或者您在控制台中重新使用了a变量,由于润滑,它将成为一个值。这是否回答了您的问题Santiago?工作得很好!谢谢你,尤根。在主要帖子下方添加其他评论。有时你无法避免它!你必须从AST树中直接获取信息,然后你偶然发现一个“值”类型。此评论节省了我的时间:)