53
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[小ネタ]実はRubyのブロック引数受け取りにキーワード引数が使える

Last updated at Posted at 2015-06-17

今更ながらブロック引数の受け取りにキーワード引数が使える事に気付いた。
よくよく考えるとブロック引数の受け取りはメソッドの引数受け取りと同じ処理してるんだから、メソッドの定義で使えるものは基本的に使えるはずで、至極当たり前の事といえばその通りなのだが……。
(自分は今日意識するまで気付いてなかった……)

だからこんな感じで書ける。

[23] pry(main)> [{hoge: "fuga", foo: "bar"}].each do |hoge:, foo:|
[23] pry(main)*   puts hoge
[23] pry(main)*   puts foo
[23] pry(main)* end
fuga
bar

もしくはこんな感じ。

[24] pry(main)> [{hoge: "fuga", foo: "bar"}].each do |hoge:, **|
[24] pry(main)*   puts hoge
[24] pry(main)* end
fuga

言語的に何も問題無いはずだが、余り見ないので、こういうスタイルで書いていいものかは迷う所。
もうRuby書いてて長いけど、時々こういう発見があるのがRubyっぽいなあという感じがする。

ちなみに、キーワード引数の仕様はRubyのバージョンに依存するのでお手持ちのRubyをご確認ください。

53
52
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?