よちよち.rb 第38回 #yochiyochirb
絶賛素Rubyがんばるぞモードのkatorieですこんにちは。
今回はAsakusa.rbの定期開催会場である永和システムマネジメントさんでよちよちしました。
ブロックに配列を渡した時の動きをいろいろみてみた
配列の要素数とブロックの引数の関係や、
配列が入れ子になっている場合のそれなどを、
いろいろ実験しながら確認していきました。
> a = [[1,2,3],[4,5,6]] => [[1, 2, 3], [4, 5, 6]] # 要素がみっつの配列がふたつ、の配列 > a.each {|x,y| p x, y} 1 2 4 5 => [[1, 2, 3], [4, 5, 6]] # ブロック引数がふたつだと、配列の要素のはじめのふたつが渡されて、みっつめが無視される > a.each {|x,y,z| p x, y, z} 1 2 3 4 5 6 => [[1, 2, 3], [4, 5, 6]] # ブロック引数の数と要素の数が一緒だと、いっこずつ処理される > a.each {|x,y,z,i| p x, y, z, i} 1 2 3 nil 4 5 6 nil => [[1, 2, 3], [4, 5, 6]] # ブロック引数のほうが多いと、足りない要素の分はnilになる > a.each {|x| p x } [1, 2, 3] [4, 5, 6] => [[1, 2, 3], [4, 5, 6]] # ブロック引数がひとつだと配列ごと渡される
ほおー!
この動き、直観的でわかりやすいといえばわかりやすいけど、
さんざんブロック引数に配列の要素をわたしていたので、
最後のやつ、ブロック引数がひとつのときに配列ごと渡されるっていう動きはなんか突然の違和感というか…
どっちが先かわかんないけど。
「なんかいい感じにしてくれるRubyすごいね」
「結論 pを使え」
inspectの動きをいろいろ確認していたら、結局「pメソッドと同じ動きなんだね!」って結論に至って、
よくよくチュートリアルを読み進めてみたら、そう書いてあったというパターン。
こうやって試行錯誤してたどりついた答えは、きっと身についている。はず。
シルバーの試験対策をはじめたけど、まだまだ身につかない
チュートリアルでRubyの文法をやっていると
「あ、これ試験対策の本に載ってた!…気が…する…けど…なんて書いてあったんだっけ…」
となることが多くて、
けっきょくそれは身についてないということなんですよね。
精進あるのみ。
次回
月初なので進捗確認です!