Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | 後から特定のオブジェクトのみにModuleを追加

パンくず

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...
-----------------