TIPS > 包含クラスのメソッド実行

作成中

- サンプルコード
#
# = クラスA
#
class A
  def test1
    puts "A::test1"
  end
 
  def test3
    puts "test3"
  end
 
  def testMethod
    puts "testMethod"
  end
end
 
#
# = クラスB
#
class B
  def initialize
    @a = A.new
  end
 
  def test1
    puts "B::test1"
  end
 
  def test2
    puts "test2"
  end
 
  def method_missing(id, *params)
    # p id.to_s.intern
    
    id = id.to_s.gsub(/_[a-z]/) { |x| x.gsub("_", "").upcase }.intern
 
    begin
      @a.send(id, *params)
    rescue
      raise $!, $!.message, caller
    end
  end
end
 
b = B.new
b.test1       # => B::test1
b.test2       # => test2
b.test3       # => test3
b.test_method # => testMethod
b.test4       # => test.rb:37: undefined method 'test4' for #<A:0x293fb8c> (NoMethodError)
 
最終更新:2008年10月02日 15:29
添付ファイル