Effective Ruby①
雑談
今日から、東アジアカップですね。 思い起こせば前回大会、柿谷・山口・青山などのメンバーが結果を残し ブラジルワールドカップに出たので、今回もしっかり活躍して頑張って欲しい。
個人的にはやはり浦和の柏木が頑張って欲しかったけど、怪我で離脱と無念。。 レッズ・武藤にも頑張ってもらいたいです! あとは五輪世代の遠藤・浅野に頑張ってもらいましょう。
※今日はなでしこの方ですね。。。
本題
Effective Ruby
中級者〜向けでしょうか。。 ひと通り勉強した人がみたほうがいいですね。 ※でも自分はひと通り勉強しましたが、まだまだ初級ですけどね。。。
200ページ弱なのでそんなに分厚くないですし、 48の項目に分かれているので読みやすいですね。
定数って(第1章 項目4より)
先頭が大文字の変数らしいですよ。 (普通は全部大文字で書きますよね。。)
[1] pry(main)> Hoge = "a".freeze => "a" [2] pry(main)> Hoge.capitalize! RuntimeError: can't modify frozen String from (pry):2:in `capitalize!'
定数の破壊的な変更はできないみたいですが
[1] pry(main)> Hoge = "a" => "a" [2] pry(main)> Hoge = "b" (pry):2: warning: already initialized constant Hoge (pry):1: warning: previous definition of Hoge was here => "b"
値の再代入はできるみたいで 警告が出ますね。。
あとコレクションはフリーズしても、
[1] pry(main)> HOGE = ["a","b"].freeze => ["a", "b"] [2] pry(main)> HOGE.map{|hoge| hoge << "eee"} => ["aeee", "beee"] [3] pry(main)> HOGE => ["aeee", "beee"]
中身が変更されちゃうので、中身もフリーズしましょうということで
[1] pry(main)> HOGE = ["a","b"].map!(&:freeze).freeze => ["a", "b"] [2] pry(main)> HOGE.map{|hoge| hoge << "eee"} RuntimeError: can't modify frozen String from (pry):2:in `block in <main>' [3] pry(main)> HOGE => ["a", "b"]
コレクションと要素をフリーズする必要があるらしい・・・ マップ、フリーズ、フリーズ・・・ 一回で出来たらいいのになぁ〜