9. 特異メソッドのサンプル
• ↓この実行結果は?
9
class Book
def initialize(title, author)
@title = title
@author = author
end
attr_accessor :title, :author
end
a = Book.new('one world', 'jal')
b = Book.new('sky team', 'ana')
def a.mine
"#{title} is mine"
end
puts a.mine
puts b.mine
10. 実行結果
10
one world is mine
eigen_method.rb:17:in `<main>': undefined method `mine' for #<Book:0x007fdeed04b158
@title="sky team", @author="ana"> (NoMethodError)
11. クラスマクロ
• クラス定義のなかで使える単なるクラスメソッド
• ↓例(obsoleteメソッド: クラスマクロ)
11
class Book
def self.obsolete(old_m, new_m)
define_method(old_m) do |*args, &block|
warn "WARNING: #{old_m}() is obsolete. Use #{new_m}()."
send(new_m, *args, &block)
end
end
obsolete :NOT_PROPER_METHOD, :proper_method
end