タグ

rubyとcに関するtyosuke2011のブックマーク (2)

  • 第4章 クラスとモジュール

    章ではクラスとモジュールの作りだすデータ構造について詳細を見ていく。 クラスとメソッドの定義 まずはCレベルでRubyのクラスを定義する方法を少しだけ見ておきたいと思う。 この章ではある意味「特殊な」ところばかりを追求するので、圧倒的多数を占 める通常ルートを先に知っておいてほしいのだ。 クラスとメソッドを定義する主要なAPIは以下の六つである。 rb_define_class() rb_define_class_under() rb_define_module() rb_define_module_under() rb_define_method() rb_define_singleton_method() 多少の派生バージョンはあるものの、拡張ライブラリはもちろん、基クラス ライブラリまでのほとんどがこれだけのAPIで定義されている。順番に紹介し ていこう。 クラスの定義 rb_d

  • 第3章 名前と名前表

    st_table メソッドテーブルやインスタンス変数テーブルとしてst_tableは既に何度か登 場してきた。章ではまずこのst_tableについて詳しい作りを見ていくことに しよう。 概要 st_tableはハッシュテーブルだということはもう言った。ではハッシュ テーブルは何かと言うと一対一対応を記録するデータ構造である。一対一の対 応とは例えば変数名とその値、関数名とその実体、などだ。 ただしもちろんハッシュテーブル以外でも一対一対応は表せる。 例えば次のような構造体のリストを使ってもいい。 struct entry { ID key; VALUE val; struct entry *next; /* 次のエントリを指す */ }; しかしこの方法は「遅い」。もしリストが1000個あったら最悪1000回リンクを たぐって探さなければならない。つまり要素の個数に比例して検索時間が長く

  • 1