まつもと ゆきひろです.

In message "[ruby-list:1394] 同じメソッドで、引数が違うやつ"
    on 96/12/19, (Dezawa Shin-ichiro) <dezawa / miya.fujifilm.co.jp> writes:
|
|出沢です

|同じ名前のメソッドだけど、色々な引数の型や数が
|異なるのを作れるんでしょうか?

メソッドオーバーロードですね.rubyではできません.
# 前に設計してた言語ではできるようになるはずだったんだけどな.

rubyでは変数に型がないため,オーバーロードはコンパイル時に解
消できません.よって,実行時にいちいちチェックしないと実現で
きないので,言語を簡単にするため,オーバーロードは採用しませ
んでした.引数の数についてはoptional引数とrest引数で対応して
ください.

  def foo(a, b=23, *c)
  end

呼び出しは以下のようになります.

  foo()		# error!! 引数の数が足りない
  foo(1)        # a=1, b=23, c=[]
  foo(2,3)      # a=2, b=3, c=[]
  foo(2,3,4)    # a=2, b=3, c=[4]
  foo(2,3,4,5)  # a=2, b=3, c=[4,5]

メソッドの型については

  * Kernel#typeを使って分類する

      case obj.type
      when "Integer"
        ...
      when "Float"
        ...
      else
        ...
      end

  * defined?を使ってメソッドが定義されているかどうか調べる

     if defined? obj.foobar
       ...
     end

  * Object#kind_of?を使ってサブクラスかどうか調べる

     if obj.king_of? IO
       ...
     end

少々面倒ですけど,これらを組み合わせて対応してください

                                まつもと ゆきひろ /:|)