質問

RubyハッシュをもたらすIronrubyスクリプトからC#メソッドを呼び出したいと思います。私は辞書を試しましたが、それはそのままです。

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]=
役に立ちましたか?

解決

.NET辞書のアイテムはKeyValuePairインスタンスであるため、そのように機能しません。

単一の変換コードを使用して、非常に簡単に回避できます。

d = scopeObj.get_hash
h = Hash[*d.collect { |x| [x.key,x.value] }.flatten]
h.each { |k,v| puts k,v }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top