🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by Akira Ikarashi Wed, 25 Feb 1998 00:00
initialize method
#51
Author: Akira Ikarashi
Date: Wed, 25 Feb 1998 00:00
21 lines
1352 bytes
$B$O$8$a$^$7$F!"8^==Mr(B@$BEl5~M}2JBg3X$G$9!#(B

ruby$B$N%5%s%W%k$H$7$F!"ImB0$N%9%/%j%W%H$rD/$a$F$$$k$N$G$9$,!"$$$/$D$+$o(B
$B$+$i$J$$$H$3$m$,$"$j$^$7$?$N$G!"$h$m$7$/$*4j$$$7$^$9!#(B

1. list.rb $B$G%3%a%s%H$5$l$F$$$k$h$&$K!"(Binitialize$B%a%=%C%I$,!V%*%V%8%'(B
$B%/%H@8@.;~$K<+F0E*$K8F$P$l$k%a%=%C%I!W$G$"$k$H$$$&$3$H$O!"$I$N%I%-%e%a(B
$B%s%H$r8+$l$P$o$+$k$N$G$7$g$&$+!)(B

2. mailread.rb $B$K$*$$$F!"(BMail.new(f)$B$H$$$&%a%=%C%I$NCf$G(Bsuper(f)$B$,8F$P(B
$B$l$F$$$^$9!#(BMail$B%/%i%9$N%9!<%Q!<%/%i%9$N(Bnew$B%a%=%C%I$H$$$&$3$H$G!"(B
Object.new(f)$B$,8F$P$l$k$H;W$C$?$N$G$9$,!"<B:]$O(BMail.initialize(f)$B$,8F(B
$B$P$l$F$$$k$h$&$G$9!#$3$l$O2?8N$J$N$G$7$g$&$+!)(B
$B$^$?!"$3$l$K4X78$9$k$H;W$&$N$G$9$,!"(Bnew$B$G$O$J$/(BMail.new$B$H$7$F@k8@$5$l(B
$B$F$$$k$N$O2?8N$J$N$G$7$g$&$+!)(B

$B;HMQ$7$F$$$k(Bruby$B$O!"(Bruby-1.0-971225 $B$G$9!#(B

-- 
$B8^==Mr(B $B98(B(ikarashi@itlb.te.noda.sut.ac.jp)
Re: initialize method
#52
Author: Shugo Maeda
Date: Thu, 26 Feb 1998 00:00
48 lines
2207 bytes
前田です。

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

|1. list.rb でコメントされているように、initializeメソッドが「オブジェ
|クト生成時に自動的に呼ばれるメソッド」であるということは、どのドキュメ
|ントを見ればわかるのでしょうか?

マニュアルの

Object.html#initialize

の部分をご覧ください。
正確にはオブジェクトの生成時ではなくClass#newの中で呼ばれています
ので、一部の組み込みクラスのようにnewを再定義しているクラスでは
initializeは呼ばれませんから注意が必要です。

|2. mailread.rb において、Mail.new(f)というメソッドの中でsuper(f)が呼ば
|れています。Mailクラスのスーパークラスのnewメソッドということで、
|Object.new(f)が呼ばれると思ったのですが、実際はMail.initialize(f)が呼
|ばれているようです。これは何故なのでしょうか?

new(f)の中で生成したオブジェクトのinitializeを呼んでいるからです。
模式的に書くとこんな感じです。

def new(*args)
  obj = オブジェクトの生成
  obj.initialize(*args)
  return obj
end

|また、これに関係すると思うのですが、newではなくMail.newとして宣言され
|ているのは何故なのでしょうか?

newはインスタンス(オブジェクト)のメソッドではなく、クラスのメソッド
だからです。
# 逆にinitializeはインスタンスメソッドです。
クラスメソッドを定義する場合は

  def ClassName.method_name(args ...)

のようにします。
# 正確にはこれはクラスオブジェクトの特異メソッドなのですが、あまり
# 気にしなくてよいと思います。

-- 
前田 修吾
Re: initialize method
#53
Author: Yukihiro Matsumoto
Date: Thu, 26 Feb 1998 00:00
46 lines
2638 bytes
まつもと ゆきひろです

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

|はじめまして、五十嵐@東京理科大学です。

|1. list.rb でコメントされているように、initializeメソッドが「オブジェ
|クト生成時に自動的に呼ばれるメソッド」であるということは、どのドキュメ
|ントを見ればわかるのでしょうか?

list.rb ^^;;;

それとリファレンスマニュアルの Object.html にも以下のように
書いてあります.

  initialize(...)

  ユーザ定義クラスのオブジェクト初期化メソッド.このメソッドは 
  Class#newから新しく生成されたオブジェクトの初期化のために呼
  び出されます.デフォルトの動作ではなにもしません.サブクラス
  ではこのメソッドを必要に応じて再定義されることが期待されてい
  ます.initializeにはClass#newに与えられた引数がそのまま渡さ
  れます.

|2. mailread.rb において、Mail.new(f)というメソッドの中でsuper(f)が呼ば
|れています。Mailクラスのスーパークラスのnewメソッドということで、
|Object.new(f)が呼ばれると思ったのですが、実際はMail.initialize(f)が呼
|ばれているようです。これは何故なのでしょうか?

これはMail.newはMailオブジェクトのメソッドではなく,Mailクラ
スのメソッドですから,superはMailクラスオブジェクトのクラス
であるClass#newを呼び出します.このClass#newが新しくオブジェ
クトを生成して,そのオブジェクトに対してinitializeを呼んでい
ます.

もっとも,このようなnewを再定義するやり方は「悪い例」です.
今では反省して,initializeを再定義するようなやり方をお勧めし
てます(1.1のmailread.rbでは直してます).

|また、これに関係すると思うのですが、newではなくMail.newとして宣言され
|ているのは何故なのでしょうか?

上述の通りruby流のやり方が定着する前の「若げの至り」です.許
して….
				まつもと ゆきひろ /:|)
Re: initialize method
#57
Author: Akira Ikarashi
Date: Sun, 01 Mar 1998 00:00
31 lines
1748 bytes
$B8^==Mr(B@$BEl5~M}2JBg3X$G$9!#(B

fj.lang.ruby$B$N(B<86hg5ngmur.fsf@soleil.localnet.or.jp>$B$N5-;v$K$*$$$F(B
shugo@po.aianet.ne.jp$B$5$s$O=q$-$^$7$?!#(B
  | $B%^%K%e%"%k$N(B
  | 
  | Object.html#initialize
  | 
  | $B$NItJ,$r$4Mw$/$@$5$$!#(B
  | $B@53N$K$O%*%V%8%'%/%H$N@8@.;~$G$O$J$/(BClass#new$B$NCf$G8F$P$l$F$$$^$9(B
  | $B$N$G!"0lIt$NAH$_9~$_%/%i%9$N$h$&$K(Bnew$B$r:FDj5A$7$F$$$k%/%i%9$G$O(B
  | initialize$B$O8F$P$l$^$;$s$+$iCm0U$,I,MW$G$9!#(B

$B$"$!$C!"(Bnew$B$b$I$3$+$GDj5A$5$l$?%a%=%C%I$J$s$G$9$M!#(B
$B$F$C$-$jJ8K!$N0lIt$@$H;W$C$F$$$^$7$?!#(B

fj.lang.ruby$B$N(B<lvu39nrri0.fsf@picachu.netlab.co.jp>$B$N5-;v$K$*$$$F(B
matz@netlab.co.jp$B$5$s$O=q$-$^$7$?!#(B
  | $B$b$C$H$b!$$3$N$h$&$J(Bnew$B$r:FDj5A$9$k$d$jJ}$O!V0-$$Nc!W$G$9!%(B
  | $B:#$G$OH?>J$7$F!$(Binitialize$B$r:FDj5A$9$k$h$&$J$d$jJ}$r$*4+$a$7(B
  | $B$F$^$9(B(1.1$B$N(Bmailread.rb$B$G$OD>$7$F$^$9(B)$B!%(B

new$B$H(Binitialize$B$N;H$$J,$1$r$I$N$h$&$K$9$k$Y$-$+!"G:$s$G$$$^$7$?!#(B
new$B$O:FDj5A$;$:!"(Binitialize$B$@$1$rJQ99$9$l$PNI$$$N$G$9$M!#(B

$B$"$j$,$H$&$4$6$$$^$7$?!#(B
$B$^$?!"<ALd$9$k$3$H$b$"$k$H;W$$$^$9$,!"$h$m$7$/$*4j$$$7$^$9!#(B

-- 
$B$$$+$i$7(B $B$"$-$i(B(ikarashi@itlb.te.noda.sut.ac.jp)
Re: initialize method
#58
Author: Yukihiro Matsumoto
Date: Mon, 02 Mar 1998 00:00
13 lines
1095 bytes
まつもと ゆきひろです

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


|五十嵐@東京理科大学です。

|あぁっ、newもどこかで定義されたメソッドなんですね。
|てっきり文法の一部だと思っていました。

そーゆーのが少ないのがrubyのいいところなんです.
ま,識者からはそれでも不徹底だなんて言われちゃいますけど.
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