From: Kanda -mu_star- Daisuke Date: 1998-07-29T09:23:04+09:00 Subject: [ruby-list:8947] Re: nil + 1, or Integer.to_i かんだです。 shugo@aianet.ne.jp (MAEDA Shugo)さんの書かれた、 「[ruby-list:8945] Re: nil + 1, or Integer.to_i」 からの引用です。 > 前田です。 > > In message "[ruby-list:8938] Re: nil + 1, or Integer.to_i" > Kanda -mu_star- Daisuke wrote: > > |> Integer#to_iは確かにありませんが,そのサブクラスであるFixnum > |> とBignumではそれぞれto_iが定義されています. > | > | スレッド読み返してみても、よく分らない…。 > | > | ・実装 > | ・仕様 > | ・ドキュメント > | > | というのがあって、仕様はいわゆる抽象メソッド? > > Rubyの場合、言語としては抽象メソッドはないので、メソッドを > 定義する場合は必ず実装も与えないといけません。 > # 空の実装というのはあり得ますけど...。 やっぱり、抽象メソッドってないですよね。 メール読んでて抽象メソッドの話らしいとしか思えなくても、マニュアルには そんな宣言のないぞ〜と悩んでました。 > | ドキュメントって何なのでしょう? > > RubyのWebページからも参照できるようになっているReference Manual > のことだと思います。 ruby-man-x.y-jp のことですよね? 今、ちょうどひととおり精読しているところです。 # いくつか気になるところがあるんだけれど、別メールで。 > 今ちょっと手元にないのですが、おそらくNumericのところにto_iの > 記述があるのだと思います。 > しかし、実際にはto_iはNumericでは定義されていないわけです。 > なぜ定義されていないのにドキュメントでは記述があるかというと、 > Numeric自身はto_iを実装しないが、サブクラスで実装されていること > が求められている、ということなのだと思います。(おそらく) インターフェースがドキュメントでしか示されない、というのは分かりにくい 気がします。抽象メソッドがあればいいんですけれど、既に提案されている例外 を投げるというのがあると嬉しいです。