soukouki’s diary

誰かの役に立つ記事をかけたらいいなあ

メタプログラミングRubyを読んで(4)

最終回です。 前回 eval class AAA def get_binding binding end def aaa @aaa end end aaa = AAA.new aaa.aaa # => nil aaa.bbb # NameError: uninitialized class variable @@bbb in AAA aaa.get_binding # => #<Binding:0x00000002a16ab0> eval("@aaa=123",aaa.get_binding) aaa.aaa</binding:0x00000002a16ab0>…

メタプログラミングRubyを読んで(3)

前回 5.5まで(一部理解できてない) 特異メソッド a = [1,2,3] b = [1,2,3] c = a def a.xx self.inject(:+) end a.xx # => 6 b.xx # NoMethodError: undefined method `xx' for [1, 2, 3]:Array c.xx # => 6 [1,2,3].xx # NoMethodError: undefined method `…

メタプログラミングRubyを読んで(2)

前回 読んでたら疲れたので第4章までで知ったこととか。 ObjectはKernelモジュールをincludeしている なので def aaa "call aaa(#{self})" end aaa #=> "call aaa(main)" [].aaa #=> "call aaa([])" /aaa/.aaa #=> "call aaa((?-mix:aaa))" 余り使うことはな…

メタプログラミングRubyを読んで(1)

メタプログラミングRuby(第2版)を図書館でリクエストしていて、今日やっと届きました。 7月30日までに返さないと <- とりあえず第3章まで読んだので覚えたこととか。 使いすぎは良くない(当たり前) メタプログラミングにも静的なものと動的なものがある。 …