🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.ruby
Article #62

Re: same name methods

#62
From: Shugo Maeda
Date: Sat, 11 Apr 1998 00:00
58 lines
2056 bytes
前田です。

# Followup-Toはfj.comp.lang.rubyにしています。

j8197602@ed.noda.sut.ac.jp (Akira Ikarashi) wrote:

|質問なのですが、同じ名前を持つメソッドを複数定義したい場合、どうすれば
|よいのでしょうか?C++やJavaのように、
|
|def cat(String str)
|   ...
|end
|def cat(File f)
|   ...
|end
|
|と書きたいのです。

Rubyではオーバーロードはできないので、

|def cat(f)
|   if f.instance_of?(String)
|      ...
|   elsif f.instance_of?(File)
|      ...
|   else
|      ...
|   end
|   ...
|end

のようにしないといけません。

case f
when String
  ...
when File
  ...
end

の方が多少スマートだと思います。
# 1.0だとできなかったかもしれません。

|また、rubyではメソッドの引数に型がないため、クラスのドキュメントには引
|数の型が書かれていないのですが、引数の型はどうしたらわかるでのしょうか?

ドキュメントに書かれてない場合はソースを読むしかないですね(^^;
たいていの場合、ドキュメントから想像が付くと思いますが。

|#先日、File.symlink()を使ったところ、エラーで終了してしまい驚きました。
|#perlと同じように、失敗したらnilを返すものだと思っていました。

馴れると例外処理の方が楽ですよ。
いちいち返り値をチェックしてやる必要がないですから。

-- 
前田 修吾
Technical Details
Message-ID: <86iuogil8a.fsf@totally-fudged-out-message-id>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6gnjr9$g82@sutnserv.ed.noda.sut.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 13488f,d2d8eda29ec38f4c
X-Google-Attributes: gid13488f,public
X-Google-Thread: 10fe86,f36f83b340bce07,start
X-Google-Attributes: gid10fe86,public
From: shugo@po.aianet.ne.jp (Shugo Maeda)
Subject: Re: same name methods
Date: 1998/04/11
Message-ID: <86iuogil8a.fsf@totally-fudged-out-message-id>
X-Deja-AN: 343065380
References: <6gnjr9$g82@sutnserv.ed.noda.sut.ac.jp>
Followup-To: fj.comp.lang.ruby
X-Emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
Mime-Version: 1.0 (generated by SEMI MIME-Edit 0.100 - "Otomaru")
Content-Type: text/plain; charset=ISO-2022-JP
Organization: AIANet Internet Service
Newsgroups: fj.lang.ruby,fj.comp.lang.ruby