第7回RHG読書会を開催しました
CSNagoyaの第7回RHG読書会を開催しました。RHG読書会はRubyソースコード完全解説という本の読書会です。
今回やったところ
第 2 部「構文解析」の第 8 章「Ruby言語の詳細」の終わりから第 9 章「速習yacc」の途中まで
勉強になったところなど
・Rubyではifは式なので、if式全体の値というものがある
-
p(if true then 1 else 2 end) #=> nil
・当たり前かもしれないけどunless式にelsifはない
・&&とand(||とor)では結合順位が違うので注意
・do~whileはRubyではブロック+while修飾子(whileの後置記法)でできる
-
begin
-
res = get_response(id
-
end while need_continue?(res)
・case文では場合分けに「===」という演算子を使う。===は左辺がレシーバになるとのこと。
-
/ab.d/ == "abcd" #=> false
-
/ab.d/ === "abcd" #=> true
・Rubyで++がないのは変数世界とオブジェクト世界をきっぱり分けるためらしい。
・++が無くてもイテレータが充実してるから実際のところあまり不便しない
・多重代入が変態的
-
(a,b), (c,d) = [[1,2],[3,4]]
・設定すれば日本語で変数名やメソッド名が作れるようになる。こんなのはShitだという意見がでるかとおもいきや、中国人と仕事をする時に重宝するとか、英訳できない単語のときに便利など、使用範囲は限定されるもののメリットも無視できないらしい
・そういえば、なでしこのソースコードがわかりやすすぎるという話題とか
まとめ
今回はRubyのソースコードとは直接関係ない内容ばかりでした。Ruby言語に対する「再定義不可能な演算子は?」などのちょっと踏み込んだ疑問などが沢山でてきて面白かった。そのへんの回答は「初めてのRuby」に結構載っていますね。すごい本です。
次回
・この続き、いよいよパーサ