- 締切済み
class << self ???
Ruby on Rails に興味をもち始めて見たのですが、そのすごさよりもどうやって動いてるんだろう?に興味が出てしまい、ソースコードを読み始めたら早速教本に載っていないなぞの構文を発見しました。(当方プログラミング初心者です^^;) module Rails class << self def boot! . . . タイトルにもある通り、class << selfの部分が謎です。 クラス名は宣言されていないし、しかも自分を継承している?? どうゆう意味なのでしょうか。。 ご存知の方是非とも教えて頂けると助かります。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
興味があって中身を調べてみるというのはとてもいいことだと思いますが、 Ruby初心者にいきなりRailsのソースはハードルが高すぎると思います(^^; とりあえず簡単に説明しておくと、 class << インスタンス いろいろ end という形式で、「特異メソッド」なるものが定義できます。 #特異メソッドという名前で参考書から探せるでしょう。 通常は x = Foo.new class << x ... end のように使うことが多いんですけど、Railsでは、 module Rails #class でないことに注意! class << self とすることで、このモジュールを取り込んだクラスに対して 先に出た「特異メソッド」を定義しています。 ここで登場している self はこの場合は module Rails を include や extend で取り込んだクラス(のメタクラスのインスタンス)になります。 まあとにかく Ruby 特有の黒魔術全開なので、手を出すのはもうちょっとあとにしたほうがよろしいかと。 満足せる豚。眠たげなポチ。:Ruby の include, extend まとめ http://blog.hacklife.net/archives/50749454.html
お礼
回答ありがとうございます。 確かにまだ難しいみたいなので、とりあえずはRailsを使えるようになってからそのうち再挑戦してみようと思います。