タグ

metaに関するphareのブックマーク (5)

  • No More Instance Variables in My Prototypes.

  • Rubyのメタクラス階層 - 世界線航跡蔵

    この記事は、先日開催した 第3回 RHGの逆襲 のまとめみたいなものである。と、同時に『初めてのRuby(仮題)』の宣伝である。 クラス、その例外、そのトリック Rubyはクラスベースのオブジェクト指向だから、メソッドの情報はクラスに属している。インスタンスメソッドを呼び出すときには、そのオブジェクトの属するクラスを調べて、そのクラスの持っているインスタンスメソッドの中から探す。 でも、Rubyの場合は例外がある。1つはモジュール。モジュールはクラスではないのに、でもインスタンスメソッドを提供している。1つは特異メソッド。特異メソッドは特定のインスタンスに直接所属するメソッドだ。 でも、ここには実装上のトリックがある。Rubyにとってはモジュールのインスタンスメソッドも特異メソッドも、等しくクラスに属するインスタンスメソッドなんだな。 モジュール モジュールをクラスにincludeすると、

  • BankAccount

    ここで登場する BankAccount の例の直接の出典は、SELF の Demo.snap 中のチュートリアルのものです。BankAccount を継承した StockAccountを含むこの例では、短いコードながらもインスタンス変数(スロット)へのアクセス、継承(委譲)、多態性などオブジェクト指向プログラミングの特色や、(言語によっては)オブジェクトの動的な振る舞いを観察するのによいサンプルだと思い、主に自分にとって新しい言語の学習時に気に入って使っています。言ってみれば、オブジェクト指向言語向けの Hello, World! 的、あるいはオブジェクト指向を公言する言語に対する(相手によってはちょっと悪意を込めた)“踏み絵”的な存在ですね。 おおもとのはある種の古典で、いろいろなバリエーションや拡張、もしくは、同名でも別の趣旨のものなど多数存在するようです。--sumim いろいろな言

    phare
    phare 2009/05/09
  • Ruby でお手軽にプロトタイプベース的 BankAccount

  • 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

  • 1