🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Akira Ikarashi Sat, 11 Apr 1998 00:00
same name methods
#61
Author: Akira Ikarashi
Date: Sat, 11 Apr 1998 00:00
37 lines
1341 bytes
$B8^==Mr(B@$BEl5~M}2JBg3X$G$9!#(B

$B<ALd$J$N$G$9$,!"F1$8L>A0$r;}$D%a%=%C%I$rJ#?tDj5A$7$?$$>l9g!"$I$&$9$l$P(B
$B$h$$$N$G$7$g$&$+!)(BC++$B$d(BJava$B$N$h$&$K!"(B

def cat(String str)
   ...
end
def cat(File f)
   ...
end

$B$H=q$-$?$$$N$G$9!#(B

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

$B$N$h$&$K(Binstance_of?()$B$r;H$C$F=hM}$rJ,$1$J$1$l$P$$$1$J$$$N$G$7$g$&$+!)(B
$B6qBNE*$K$O!"J#?t$N(Binitialize$B$rDj5A$7$?$$$H9M$($F$$$^$9!#(B

$B$^$?!"(Bruby$B$G$O%a%=%C%I$N0z?t$K7?$,$J$$$?$a!"%/%i%9$N%I%-%e%a%s%H$K$O0z(B
$B?t$N7?$,=q$+$l$F$$$J$$$N$G$9$,!"0z?t$N7?$O$I$&$7$?$i$o$+$k$G$N$7$g$&$+!)(B

#$B@hF|!"(BFile.symlink()$B$r;H$C$?$H$3$m!"%(%i!<$G=*N;$7$F$7$^$$6C$-$^$7$?!#(B
#perl$B$HF1$8$h$&$K!"<:GT$7$?$i(Bnil$B$rJV$9$b$N$@$H;W$C$F$$$^$7$?!#(B

-- 
$B8^==Mr(B $B98(B(ikarashi@itlb.te.noda.sut.ac.jp)
Re: same name methods
#62
Author: 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を返すものだと思っていました。

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

-- 
前田 修吾
Re: same name methods
#63
Author: ttate
Date: Sun, 12 Apr 1998 00:00
18 lines
1157 bytes
立石@JAISTです。

j8197602@ed.noda.sut.ac.jpさん(04月11日20時):
j8197602>>五十嵐@東京理科大学です。
j8197602>>
j8197602>>質問なのですが、同じ名前を持つメソッドを複数定義したい場合、どうすれば
j8197602>>よいのでしょうか?C++やJavaのように、

クラスObjectのメソッドis_a,instance_of?などを使って区別
しています。

----------------------------------------------
Name	Takaaki Tateishi
E-Mail 	ttate@jaist.ac.jp
URL	http://www.pluto.dti.ne.jp/~tateishi/
Org	School of Information Science
	Japan Advanced Institute of Science and Technology (JAIST)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads