- ベストアンサー
Rubyのインスタンス初期化について
- Rubyのインスタンスの初期化方法について教えていただけませんか?newメソッドを使わずにinitializeメソッドを定義しただけでインスタンスが作成されて初期化までされる理屈を知りたいです。
- また、クラスを作る際に基となるObjectクラスが一体何なのかも知りたいです。
- 例として、Sampleクラスを作ってinitializeメソッドでインスタンスを初期化する場合、なぜnewメソッドでインスタンスを作りそこに値を代入しないのか疑問です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私がいつも見ていたサイト。 http://www.mapee.jp/ruby/ http://www.namaraii.com/rubytips/ あと、公式リファレンス http://doc.okkez.net/ はもちろん必須ですね。
その他の回答 (2)
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
>まったくの初心者でもわかるような入門書 残念ながら世の中そんなに甘くはありませんが、書籍なら「楽しいRuby」がベストです。 その上で、ごく初歩の入門的知識についてはネットで入門サイトを見るほうがむしろ説明が初学者に分かりやすいかと思われます。
お礼
今日、久々に外出するのでさっそく「楽しいruby」を購入したいと思います。 今使っている本の名前はいえませんが、私が混乱しているのはこの本の せいではなくて、私の知識不足、勉強不足によるものですので・・・ もっと学習に励んでいきたいとおもいます。 入門サイトですか、参考にさしていただきます アドレスなどあるとうれしいのですが、これからも色々相談させて いただきますがどうぞよろしくお願いします。
補足
上の例は def initialize(lv, hp)の後に @lv = lv @hp = hp がぬけてました^^;
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
どこの誰にどう聞いたか知らないが、勘違いしすぎです。 >newメソッドを使わずにinitializeメソッドを定義しただけで >インスタンスが作成されて初期化までされる 上記の認識からして根本的におかしいです。initializeメソッドは、「newでインスタンスを生成するときに自動で呼ばれるメソッド」です。 >03: #Samlpeクラスのインスタンスを初期化 >04: def imitialize( lv, hp ) >05: end (ミスタイプは無視します)これはinitializeメソッドが定義されただけであって、何も初期化していません。「初期化」というのは「initializeメソッドの中で行われる処理」のことを言います。 >それにnewメソッドでインスタンスを作りそこに数値の0を代入できるなら >そもそもinitializeで初期化する必要は無いのではないでしょうか? これは完全に意味不明。 上記2点の誤解から生まれる誤解だとは思いますが。 >クラスを作るときに基となっているObjectクラス Objectクラスは「クラスを作るとき」には関係ありません。「すべてのオブジェクトのスーパークラス」です。すべてのオブジェクトはObjectクラスを継承しており、Objectクラスのメソッドが使える。 つまり逆に表現するならばすべてのオブジェクトに使えるメソッドを定義した「スーパークラス用クラス」です(この一文は厳密には違いますがイメージのために説明を簡略化しました)。 よかったらあなたにそんな大嘘を教えた本かサイトを教えていただきたいものです…
お礼
はぁ・・・やはり誤解しているんですね。 まったくの初心者でもわかるような入門書があれば 教えていただきたいです・・・
お礼
アドレスどうもありがとうございます。 お気に入りに追加しました、今日さっそく たのしいRuby第3版というのを買ってきました。 じっくり勉強していこうと思います。 アドバイスありがとうございました。