2011-02-04 77 views
1

我想從IronRuby腳本調用一個C#方法來產生Ruby散列。我試過字典,但保持原樣。.Net對象對應於IronRuby散列

public Dictionary<string, string> GetHash() 
{ 
    Dictionary<string, string> hash = new Dictionary<string, string>(); 
    hash.Add("a", "1"); 
    hash.Add("b", "2"); 
    return hash; 
} 

我希望能夠用它在我的IronRuby腳本作爲哈希

myHash = scopeObj.GetHash() 
myHash.each{ |k,v| 
    print("#{k}=#{v}") 
} 

其結果是:

[a, 1]= 
[b, 2]= 

回答

1

它不喜歡的工作因爲.NET字典中的項目是KeyValuePair實例。

您可以變通方法,很容易地與轉換一行代碼:

d = scopeObj.get_hash 
h = Hash[*d.collect { |x| [x.key,x.value] }.flatten] 
h.each { |k,v| puts k,v }