タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

metaclassに関するtakeshiketaのブックマーク (9)

  • Mixin hierarchy in Ruby 1.9

    Mixin hierarchy in Ruby 1.9 in Ruby 1.9 where I(x) and (x) are in RHG notation. it means, * I(x) is an incarnation class of the module x. * (x) is an eigenclass of object x. source: module Inteligence; end module Prayable include Inteligence end class Cattle; end class Yapoo < Cattle include Prayable end class Pegasus < Cattle include Inteligence end Done

    Mixin hierarchy in Ruby 1.9
  • Ruby1.9 のクラスのメタ階層を整理する 4 - Smalltalkのtは小文字です

    http://idm.s9.xrea.com/ratio/2008/12/14/000803.html ぜんぜん関係ない話ですが、この記事で Yugui さんが、ごくふつうのことのように Smalltalk を使って確かめた結果を例として挙げてくださっているのが個人的にはとっても嬉しかったです。 とかく世間では敬遠されがちですが、じつのところ Smalltalk はとってもシンプルな代物なので(文法は「object message」のみで、処理系は「do it」と「print it」相当の操作を組み合わせるだけでたいていのことは可能)、他の多くの人にもこんなふうに気軽に動かして中身を探索し、面白いネタを掘り起こしてもらえればなと願っています。 さて。いくつか気になった点を以下に書き出してみました。 クラス、メタクラス、メタメタクラスと辿る上でSmalltalkのMetaclass clas

    Ruby1.9 のクラスのメタ階層を整理する 4 - Smalltalkのtは小文字です
  • [ruby-core:18437] Class as second-generation singleton class

  • Ruby1.9 のクラスのメタ階層を整理する 2 - Smalltalkのtは小文字です

    sumimさんの「Ruby1.9のクラスのメタ階層を整理する」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。 Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵 んー。メタ階層がどうなっているかを整理したかったので、書き方はこれでいいのです。お世辞にもきれいな絵とは言い難いですが、雑然としているのはやはり Ruby の実状を示しているからだと思います。 yugui さんの図は、たしかにクラスと特異クラス(メタクラス)が揃って並んでいて見た目にはきれいなのですが、これだとクラスが整然と並んでこそいるものの、肝心のメタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 図の目的をわかりやすくするために、先に示した図か

    Ruby1.9 のクラスのメタ階層を整理する 2 - Smalltalkのtは小文字です
  • Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵

    sumimさんの「 Ruby1.9のクラスのメタ階層を整理する 」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。あと、モジュールのせいもある。 前提知識 Rubyは基的には単一継承のクラスベースオブジェクト指向言語なのだけれども、幾つか注意すべき処がある。 クラスはClassクラスのインスタンスである。 モジュール 制限付きの実装多重継承をもたらす仕組み。内部的には、モジュールの「化身」となるクラスを継承階層を挟み込むことで実装されている。 以下、モジュール M に対してその化身クラスを I(M) と表記する。 詳しくは 以前の記事 を参照。 特異クラス 特定のオブジェクトに専属するクラスのこと。特定のオブジェクトにだけ存在するメソッド「特異メソッド」を定義すると、内部的には特異クラスを

    Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵
  • Rubyのメタクラス階層について再び - 世界線航跡蔵

    承前 。 3ヶ月ばかり時間が空いてしまったけれども、 sumimさんの記事 に答えたいと思います。 yugui さんの図は、たしかにクラスと特異クラス(メタクラス)が揃って並んでいて見た目にはきれいなのですが、これだとクラスが整然と並んでこそいるものの、肝心のメタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 いいえ、これで良いのです。なぜって? これが私の図(下記再掲)で一番言いたかったことで、ただ、一般のメタクラスと#<Class:Class>を並べているのはいただけないかな。これはsumimさんのSmalltalk版の図を意識しすぎて、まずかったかなと思います。 図1: うん、やっぱり メタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 これは当たってるかもしれません。 図の修

    Rubyのメタクラス階層について再び - 世界線航跡蔵
  • Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です

    [ruby-core:18437] Class as second-generation singleton class を読んだ当初は、特異クラスのクラスが Class ってことでええやん!と思ったのですが、改めて調べてみるとどうやら必ずしもすべての特異クラスが Class に属するわけではないようで(かつ、確認する過程で、id:sumim:20080111:p1 の間違いを見つけてしまったり、id:sumim:20061019:p1 の謎が解けたりもしたので)、この機会に表題の件についていったん図にして自分なりに理解を整理しておくことに。 関連: Ruby1.9 のクラスのメタ階層を整理する 2 - Smalltalkのtは小文字です Ruby1.9 のクラスのメタ階層を整理する 3 - Smalltalkのtは小文字です Ruby で、クラスのメタ階層の情報を得る際の注意として、Ru

    Ruby1.9 のクラスのメタ階層を整理する - Smalltalkのtは小文字です
  • yohasebe.com : メタクラス完全理解

    Rubyのメタプログラミングについて興味はあるけどまだきちんと理解していない人は、次の4つのメソッドをよく見てほしい。新たな発見があるかもしれない。 class Object # 特異クラスはどこにでも隠れてる。 def metaclass; class << self; self; end; end def meta_eval &blk; metaclass.instance_eval &blk; end # メタクラスにメソッドを追加 def meta_def name, &blk meta_eval { define_method name, &blk } end # クラスの中でインスタンスメソッドを定義 def class_def name, &blk class_eval { define_method name, &blk } end end 僕はこれらのメソッドを meta

    takeshiketa
    takeshiketa 2008/08/26
    大変おもしろかった!これはいい
  • Ruby のクラスとインスタンスの関係(あるいはモジュールと特異メソッドについて) - val it : α → α = fun

    http://d.hatena.ne.jp/m-hiyama/20080109/1199863428http://d.hatena.ne.jp/sumim/20080109/p2 うーん、タイトルでスルーしてたけどさすが面白い。誰か Rubyist が既に書いているかな?という気がしますけど。まあいいか。以下は少しだけ調べながら書きましたが、カンチガイなどにより嘘や不正確な情報が混じっている可能性があります。 まず Ruby は Smalltalk に影響を受けた(とされる)オブジェクトシステムを使っています。ということで、 Object という識別子はクラスという概念を指すと同時に「Objectクラスオブジェクト」も指します。ややこしいことに Ruby にも Object.class という表現は存在するのですが、それは「Objectクラスオブジェクト」ではありません。「Object ク

  • 1