2018-10-01から1ヶ月間の記事一覧

Ruby で yield_self のめっちゃ便利な使い道

Ruby 2.5 で追加された #yield_self という地味に便利なメソッドがあります。 これは『レシーバを引数としてブロックを呼び出す』というメソッドになります。 既存のメソッドとして #tap と似ていますが、#tap とは異なり『ブロックの戻り値を #yield_self …

Ruby 2.5 系で CSV.generate のバグ

Ruby 2.5 系で CSV.generate を使用しようとしたら意図しない動作をして、調べてみたらバグだったのでそのまとめ。 しかし、これ、結構クリティカルなバグだと思うんですけど、全然話題になってないのが不思議(当時は話題になっていたのかもしれないけど。 …

Ruby で nil が含まれている配列をソートする

さて、Ruby の配列でソートを行いたい場合、配列内に nil があるとうまくソートできないことがあります。 ary = ["homu", nil, "mado", nil, nil, "mami", "saya", nil] # Error: comparison of String with nil failed (ArgumentError) ary.sort これは、『…

Kernel.#proc でブロックを渡さなかった時の挙動

さて、 Kernel.#proc といえば普通は『ブロックをオブジェクトとして扱う時』に使用します。 # ブロックをオブジェクト化する plus = proc { |a, b| a + b } # もしくは Proc.new でもどうようの挙動になる # plus = proc { |a, b| a + b } # #call でブロッ…