ジョギング
- 香椎浜 2 周
- 終始息苦しくて辛かった
日課
- (腕立て x 50) x 3
- 腰痛が長引いている
夕飯
- 奥さんの得意料理の一つであるビーフシチュー
- 先日頂いた赤ワインを少し入れてみたら、お肉がとても柔らかくジューシーに仕上がっていた
平昌オリンピック
- メダルラッシュ、感動して泣けた
- 政治利用しようとしている輩がいるというのは、血のにじむような努力をして、このオリンピックに掛けてきた選手たちに対して失礼だよなと改めて思ったり
今日のるびぃ ~ yield と Proc ~
引き続き, プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで の読書メモ.
yield
以下のようなメソッドがある.
def greeting puts 'Hello' puts 'Hello' end
ブロック付きで呼び出す.
[3] pry(main)> def greeting [3] pry(main)* puts 'Hello' [3] pry(main)* yield [3] pry(main)* puts 'Hello' [3] pry(main)* end => :greeting [4] pry(main)> greeting do [4] pry(main)* puts 'hoge' [4] pry(main)* end Hello hoge Hello => nil
ブロックが渡されているかを確認する場合には block_given? を利用する.
[5] pry(main)> def greeting [5] pry(main)* puts 'Hello' [5] pry(main)* if block_given? [5] pry(main)* yield [5] pry(main)* end [5] pry(main)* puts 'Hello' [5] pry(main)* end => :greeting [6] pry(main)> greeting do [6] pry(main)* puts 'hoge' [6] pry(main)* end Hello hoge Hello => nil [7] pry(main)> greeting Hello Hello => nil
yield はブロックに引数を渡したり, ブロックの戻り値を受け取ったり出来る.
[8] pry(main)> def greeting [8] pry(main)* yield 'foo' [8] pry(main)* end => :greeting [9] pry(main)> greeting do |text| [9] pry(main)* puts text [9] pry(main)* end foo => nil
yield に渡される引数に過不足があっても例外にはならない.
[13] pry(main)> def greeting [13] pry(main)* yield 'foo', 'bar' [13] pry(main)* end => :greeting [14] pry(main)> [15] pry(main)> greeting do |text| [15] pry(main)* puts text [15] pry(main)* end foo => nil [16] pry(main)> greeting do |t1, t2| [16] pry(main)* puts t1 [16] pry(main)* puts t2 [16] pry(main)* end foo bar => nil
ふむふむ.