たのしいRubyを読んでいる

他の言語を色々かじる程にJavaが嫌になって、今度はRubyをかじってみている。
HaskelやPerlの時よりは自分的に真面目度が高い。
Rubyの文法について全然知らないわけではないので、へー、イテレータのメソッドがprototype.jsに似てるな、などと思いながらすらすら読み進める。わかりやすい本だと評判だが確かに。配列の章の後に文字列の章がきてる所がいい。列挙の概念を先に知っているので文字列も列挙可能な文字の列だというイメージですんなり頭に入る。たり。
ただ練習問題が腑に落ちない。例えば11章の(6)、randを使って配列をでたらめにソートせよ、とある。rand自体はここまで出てきておらず、rand(n)について即席で説明が書いてある。それはいいとして、サポートページの解答例にはary2 = ary.sort_by{|i| rand }とある。
ハテ、いま教わった書式rand(n)と違うよ? 引数なしで呼ぶと何が返ってくるんだろう。
まあ確かに解答例が一番エレガントな書き方なのかもしれないけど、自分なりに答え出してからココ見て確認するよね? それでまだ教わってない書き方が解答例になってたらやるせなくなる人もいるんじゃないだろうか。
まだある。13章の練習問題(5)、順番を保持するHashの実装が課題。
hash["key"]の書式で書けるものを実装しなくてはいけないんだけど、
[], []= を実装すれば上記の書式で書ける、ということは(予想はついたが)知らなかったため、実装するのにこの本の後ろの方やらwebやら見る必要があった。
そしてサポートページ解答例を見るとyield()が使われている。yieldの初出はこの本では20章。うーん、これは入門書としてはよろしくないね。練習問題はこれまでの知識だけで解ける筈って考えて読むので、わからない材料がノーヒントで出てくると読み落しがあったかとオドオド前の方を探し回ってしまう羽目に。
ということで14章以降はこの本以外の情報も見ながら読み進めることにする。

[rakuten:book:11890217:detail]