【29日目】【1日20分のRailsチュートリアル】第4章の演習(2.~4.)
今日は「4.6 演習」の2.から。
4.6 演習
2.リスト4.15を参考にして、上で作成したshuffleメソッドを Stringクラスに追加してください。
できたー。追加するだけ。
>> class String >> def shuffle >> self.split('').shuffle.join >> end >> end => :shuffle >> "foobar".shuffle => "oarobf"
3.person1、person2、person3という3つのハッシュを作成してください。それぞれのハッシュには:firstキーと:lastキーを与え、さらにそれぞれのキーに名前と名字を値として割り当ててください。
次にparamsハッシュを作成し、params[:father]はperson1、params[:mother]はperson2、そしてparams[:child]は person3になるようにしてください。
最後に、params[:father][:first]などが正しい値を持っていることを確認してください。
ハッシュなので「4.3.3 ハッシュとシンボル」見つつ作る。
まずperson1
、person2
、person3
という3つのハッシュを作成しよう。
>> person1 = { first: "Taro", last: "Yamada" } => {:first=>"Taro", :last=>"Yamada"} >> person2 = { first: "Hanako", last: "Yamada" } => {:first=>"Hanako", :last=>"Yamada"} >> person3 = { first: "Ichiro", last: "Yamada" } => {:first=>"Ichiro", :last=>"Yamada"}
山田家にした。
次にparams
ハッシュを作成して、それぞれを割り当てる。
>> params[:father] = person1 => {:first=>"Taro", :last=>"Yamada"} >> params[:mother] = person2 => {:first=>"Hanako", :last=>"Yamada"} >> params[:child] = person3 => {:first=>"Ichiro", :last=>"Yamada"}
できたのでparams[:father][:first]などが正しい値を持っていることを確認。
>> params[:father][:first] => "Taro" >> params[:mother][:last] => "Yamada"
4.Ruby API のオンラインマニュアルを見つけて、Hashクラスのmergeメソッドについて読んでみてください。では、次の式の値は何ですか?
{ "a" => 100, "b" => 200 }.merge({ "b" => 300 })
まずCloudIDEで使っているRubyのバージョンを確認。
$ ruby --version ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
2.3.0
らしい。ということでマニュアルはこれ?
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.3.0)
でもここからHashクラスのmerge
メソッドに辿りつけなかったので別途ぐぐった…。
selfとotherのハッシュの内容をマージ(統合)した結果を返します。デフォルト値はselfの設定のままです。
self と other に同じキーがあった場合はブロック付きか否かで 判定方法が違います。ブロック付きのときはブロックを呼び出して その返す値を重複キーに対応する値にします。ブロック付きでない 場合は常に other の値を使います。
同じキー(:b
)があって、ブロック付きではないので引数の値が使われる、のかな。
{ "a" => 100, "b" => 300 }
になると予想。
Railsコンソールで動作確認。
>> { "a" => 100, "b" => 200 }.merge({ "b" => 300 }) => {"a"=>100, "b"=>300}
正解!
ということでこれで第4章の演習が終了。
今日の作業時間は【33分】。
次は「第5章 レイアウトを作成する」から。
やっと5章。まだ半分にも満たない。道のり長いな~