blog.waterlow.work

Ruby, Rails, js, etc...

【Ruby】Gold試験対策-メタプログラミングRuby

メタプログラミングRubyを借りてきました。 お友達に感謝感謝。しっかり身につけて還元しようと思います。

メタプログラミングRuby

メタプログラミングRuby

魔法のようなことが書いてあるのに対話形式で読みやすいです。なんかわかった気にさせてくれる本です!とりあえず気になった点をリストアップしてみる。

1.すべてがインスタンスである。(他のOOPLもそうだけど、Rubyはその事実にたどり着きやすい。) 2.メソッドを定義するメソッド、定義してないメソッドが呼ばれた時の動作を記述するメソッドがある。  →define_method、method_missing 3.ブロックやメソッドもインスタンスだから、引数にして他のメソッドに渡せる。

*** 疑問点 1.なんでこんなにたくさんの記述方法を用意するのか?クラス定義やメソッド定義は1通りの方が統一できるのでは?

|ruby| def Class1;end Class2 = Class.new do; end

二行ともやっていることは同じ

ただ下の行はただのブロック渡し定数宣言とみなされ、外のローカル変数を中から見ることができる。

||< そもそもJavaではNested Classを作らない限りこんなことにはならないので考えたこともなかったです。 ぜ~んぶインスタンスとメソッドにしてしまうような高度な一般化と、初学者でもその辺りに触れることができるのはRubyの魅力かも知れません!