Thread View: fj.lang.ruby
5 messages
5 total messages
Started by Akira Ikarashi
Wed, 25 Feb 1998 00:00
initialize method
Author: Akira Ikarashi
Date: Wed, 25 Feb 1998 00:00
Date: Wed, 25 Feb 1998 00:00
21 lines
1352 bytes
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
Author: Shugo Maeda
Date: Thu, 26 Feb 1998 00:00
Date: Thu, 26 Feb 1998 00:00
48 lines
2207 bytes
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
Author: Yukihiro Matsumoto
Date: Thu, 26 Feb 1998 00:00
Date: Thu, 26 Feb 1998 00:00
46 lines
2638 bytes
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
Author: Akira Ikarashi
Date: Sun, 01 Mar 1998 00:00
Date: Sun, 01 Mar 1998 00:00
31 lines
1748 bytes
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
Author: Yukihiro Matsumoto
Date: Mon, 02 Mar 1998 00:00
Date: Mon, 02 Mar 1998 00:00
13 lines
1095 bytes
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