パンくず
Ruby Cookbook
後から特定のオブジェクトのみにModuleを追加
概要
後から特定のオブジェクトのみにModuleを追加
内容
特定のオブジェクトのみにModuleの機能を追加したい場合は
extendメソッドを利用します。
サンプルコード
# encoding: Windows-31J require "pp" class Programmer attr_reader :name, :langs def initialize(name, *langs) @name, @langs = name, langs end def coding puts "katakata.... Run test! Red. katakatakata Run test! Green Yeah!!" end end module LazyProgrammer def coding puts "Ctrl+C,Ctrl+V... Test code? Not need. My copy-programming is perfect" end def sleep puts "zzzz..." end end programmers = [Programmer.new('Matsumoto Yukihiro', 'Ruby', 'C'), Programmer.new('Tanaka Copio', 'Java').extend(LazyProgrammer)] programmers.each do |programmer| puts "-----------------" pp programmer.name pp programmer.langs programmer.coding programmer.sleep if programmer.respond_to?(:sleep) puts "-----------------" end
出力
----------------- "Matsumoto Yukihiro" ["Ruby", "C"] katakata.... Run test! Red. katakatakata Run test! Green Yeah!! ----------------- ----------------- "Tanaka Copio" ["Java"] Ctrl+C,Ctrl+V... Test code? Not need. My copy-programming is perfect zzzz... -----------------