What is it, naokirin?

RubyのMixinをちょっとかじってみた

RubyのMixinがどんな感じかな、ということで試してみた。

# モジュールの定義
module Mod
  def normal str
    return "#{self.func str}"
  end
  
  def exclamation str
    return "#{self.func str}!"
  end
  
  def period str
    return "#{self.func str}."
  end
end


class Foo
  def func str
    return str
  end

  include Mod  # Mixinしている
end

class Bar
  def func str
    return str * 2
  end

  include Mod  # Mixinしている
end

puts Foo.new.normal "ok"       #=>"ok"
puts Foo.new.exclamation "ok"  #=>"ok!"
puts Foo.new.period "ok"       #=>"ok."

puts Bar.new.normal "ok"       #=>"okok"
puts Bar.new.exclamation "ok"  #=>"okok!"
puts Bar.new.period "ok"       #=>"okok."

こんな感じでしょうか。

もうすこしMixinするモジュールが多い時などに重要になりそうですね。あとはまとまった機能をモジュールとしてまとめるときなどはよさそうです。

ComparableなどのRubyの標準にあるモジュールなどもこれで使えるのでRubyを使うときはどんどん使わないといけませんね。