社のオンライン飲み会
- もといご飯を食べながらだべる会
- アジャイルPUBという名前がついてる
- Rust がアツいよねーとかエンジニアチームとビジネスサイドのお困りごととか
- 自分のスキルセットの戦略どうするみたいな
- 学んだことをどうアウトプットできるか?
- むしろ戦略立てなくて好きにするとか
hash の value が一致しているか知りたい
hash1 = {a: 1, b: 1, c: 1, d: 1, e: 1} hash2 = {a: 1, b: 1, c: 2, d: 1, e: 1} hash3 = {a: 1, b: 1, c: 2, d: 3, e: 1}
こんな感じの hash がいくつかあるとき、各 hash の value が一致しているかを知りたい。一致していない場合は何が不一致だったのか知りたい。 もうちょっと具体的にはこんな hash で、ある gem 名をキーにして、複数の gemfile.lock の同じ gem のバージョンを比較したい。
{:ransack, {:gemfile1, Gem::Version.new('1.0.0'), :gemfile2, Gem::Version.new('1.0.0')}}
どうしたもんかなーと思って素朴に実装してみた。
hash = {a: 1, b: 1, c: 2, d: 1, e: 1} hash.inject { if _1[1] != _2[1] ; p _1, _2; end; _1} # [:a, 1] # [:c, 2] # => [:a, 1]
なんかもっと綺麗に書けないかしら、と思ってフィヨルドブートキャンプの自分の分報につぶやいたら、アドバイスを貰って
hash = {a: 1, b: 1, c: 2, d: 1, e: 1} hash.group_by(&:last) # => {1=>[[:a, 1], [:b, 1], [:d, 1], [:e, 1]], 2=>[[:c, 2]]}
こう書けることを教えてもらった。