From: matz@... (Yukihiro Matsumoto) Date: 1996-12-20T02:28:48+09:00 Subject: [ruby-list:1401] Re: Ʊ¤¸¥᥽¥åɤÇ ¡¢°ú¿ô¤¬°㤦¤ä¤Ä まつもと ゆきひろです. In message "[ruby-list:1394] 同じメソッドで、引数が違うやつ" on 96/12/19, (Dezawa Shin-ichiro) 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 少々面倒ですけど,これらを組み合わせて対応してください まつもと ゆきひろ /:|)