2013-11-26 45 views
4

我有一個存儲的地圖類型值的變量,但我不能提供鍵訪問值:如何在Rascal中將值類型轉換爲Map?

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 

如何可以解析的值,以圖能夠找回自己的價值?

+0

還有就是你是如何得到這個地圖擺在首位:-)所以,你也可以防止這種情況發生,例如,當你從磁盤讀取使用'readTextValueFile(#map [STR值的問題, str],myLoc)'。這將保證返回值的類型爲'map [str,str]' – jurgenv

+1

或者您在控制檯中重用了一個變量,並且由於潤滑,它變成了一個值。 –

+0

這是否回答你的問題聖地亞哥? – jurgenv

回答

5
if (map[str,str] myMap := a) { 
    // do stuff with myMap 
} 
else { 
    throw "<a> is not a map?"; 
} 
+0

工作得很好!謝謝Jurgen。 添加主帖子下方的其他評論。有時你無法避免它!您必須從AST樹中獲取直接信息,然後您偶然發現「值」類型。此評論節省了我的時間:) –

相關問題