def self.foo
[
["a","aa"],
["b","bb"],
]
end
「a」を指定すると、「aa」を取得できるはずです 「bb」を指定すると、「b」を取得できるはずです
どうすればいいですか?
def self.foo
[
["a","aa"],
["b","bb"],
]
end
「a」を指定すると、「aa」を取得できるはずです 「bb」を指定すると、「b」を取得できるはずです
どうすればいいですか?
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"
おそらく次のような独自の「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