什么.Net对象对应于IronRuby哈希

时间:2011-02-04 12:10:39

标签: hash ironruby

我想从IronRuby脚本调用一个C#方法,导致Ruby哈希。我试过词典,但保持不变。

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 个答案:

答案 0 :(得分:1)

它不起作用,因为.NET字典中的项是KeyValuePair实例。

您可以使用一行转换代码轻松解决这个问题:

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