0
  def self.foo
    [
      ["a","aa"],
      ["b","bb"],
    ]
  end

「a」を指定すると、「aa」を取得できるはずです 「bb」を指定すると、「b」を取得できるはずです

どうすればいいですか?

4

3 に答える 3

2

assocrassocはあなたの友達です:

ar = [
  ["a","aa"],
  ["b","bb"],
]
p ar.assoc("a").last #=> "aa"
p ar.rassoc("bb").first #=> "b"
于 2012-09-12T13:56:08.837 に答える
0
Hash[self.foo].invert["bb"] #=> "b"
Hash[self.foo]["a"] #=> "aa"

Hash[]配列をハッシュに変換します

Hash#invertすべての値がキーにマップされるようにハッシュを反転します

両方を行いたい場合:

Hash[self.foo]["bb"] or Hash[self.foo].invert["bb"] #=> "b"
于 2012-09-12T13:28:23.983 に答える
0

おそらく次のような独自の「bimap」実装を作成します。

class Bimap < Hash
  alias :__put__ :[]=
  def []=(key,value)
    __put__(key,value)
    __put__(value,key)
  end

  alias :__size__ :size
  def size
    __size__ / 2
  end

  # ...any other Hash methods to reimplement?
end
于 2012-09-12T14:18:22.223 に答える