[#2906] DLL for GNU Win32 — WATANABE Hirofumi <watanabe@...>
わたなべです.
5 messages
1997/05/06
[#2910] thread and fork — jkuro@... (Jun Kuroda)
黒田です。
15 messages
1997/05/07
[#2911] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/07
まつもと ゆきひろです.
[#2912] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/07
黒田です。
[#2913] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/07
まつもと ゆきひろです.
[#2914] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/07
黒田です。
[#3023] Re: thread and fork
— jkuro@... (Jun Kuroda)
1997/05/27
黒田です。
[#3025] Re: thread and fork
— matz@... (Yukihiro Matsumoto)
1997/05/28
まつもと ゆきひろです
[#2922] chap 1 draft #2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
7 messages
1997/05/09
[#2936] How to create ext — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
8 messages
1997/05/13
[#2938] Re: How to create ext
— matz@... (Yukihiro Matsumoto)
1997/05/13
まつもと ゆきひろです.
[#2952] [BUG] Dir.glob — sinara@...
原です。おひさしぶりです。
6 messages
1997/05/16
[#2960] dl-malloc — jkuro@... (Jun Kuroda)
黒田です。
9 messages
1997/05/19
[#2978] Re: [s-lang:00052] Re: Python/Ruby Jed — MAEDA Shugo <shugo@...>
前田です。
6 messages
1997/05/20
[#3005] Matrix — MAEDA Shugo <shugo@...>
前田です。
13 messages
1997/05/22
[#3006] Re: Matrix
— matz@... (Yukihiro Matsumoto)
1997/05/22
まつもと ゆきひろです
[#3026] ruby 1.0-970528 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
9 messages
1997/05/28
[#3027] Re: ruby 1.0-970528 released
— MAEDA Shugo <shugo@...>
1997/05/28
前田です。
[#3031] Re: ruby 1.0-970528 released
— matz@... (Yukihiro Matsumoto)
1997/05/29
まつもと ゆきひろです
[#3028] Can I use non IO object for $stdout? — MAEDA Shugo <shugo@...>
前田です。
7 messages
1997/05/28
[#3030] Re: Can I use non IO object for $stdout?
— matz@... (Yukihiro Matsumoto)
1997/05/29
まつもと ゆきひろです
[#3034] Re: Can I use non IO object for $stdout?
— MAEDA Shugo <le4441ms@...>
1997/05/29
前田です。
[#3050] flock (BSD/OS 2.0 i386) — gotoken@... (GOTO Kentaro)
後藤です。
6 messages
1997/05/30
[#3055] ruby 1.0-970530 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
5 messages
1997/05/30
[ruby-list:3057] Re: builtin class
From:
matz@... (Yukihiro Matsumoto)
Date:
1997-05-30 08:59:17 UTC
List:
ruby-list #3057
まつもと ゆきひろです
In message "[ruby-list:3056] builtin class"
on 97/05/30, toyofuku@juice.or.jp <toyofuku@juice.or.jp> writes:
| 豊福@パパイヤです。
|
| ruby 埋め込みのアプリケーションで新しいクラスを
|組込で作るかユーザ定義で作るかについて教えて下さい。
| 組込クラスのサブクラスには何らかの制限があったと
|思うのですが、実用上どのくらい問題になる(ならない)
|ものでしょうか。
まずrubyのクラスには種類がありません.rubyで定義してもCで定
義しても同じクラスが出来ます.種類があるのはオブジェクトです.
オブジェクトには2種類あります.
組込みオブジェクト
ruby.hで構造の定義されている通常のオブジェクトとはことな
る構造を持つオブジェクト.このオブジェクトはインスタンス
変数を持てないしなど制限がある.
通常オブジェクト
普通のオブジェクト
組込みオブジェクトのクラスは(普通のクラスですけど),組込みオ
ブジェクトの制限からメソッドに細工がしてある場合があります
(後述).
組込みオブジェクトは簡単には追加できません.拡張モジュールを
書く人はDataという組込みオブジェクトを使ってCの構造体をラッ
プするのが普通です.
| ところで、まずは組込クラスをいろいろさわってみよう
|と適当に
| x = Fixnum.new(5)
|と試したところ
| ERR: undefined method `new' for Fixnum(Class)
|と怒られました。
Numericのサブクラスはnewを知りません.undefしてあります.
| クラスは皆 new を知っている(少なくとも先祖の
|誰かは知っている)と思っていたのですが、どこが
|おかしいのでしょうか。
全てのクラスの大本のクラスであるClassは(声に出すと変な感じ),
newというメソッドを定義していますから,普通だったらnewを知っ
ているんですが,Numericのそれぞれのサブクラスなどではわざわ
ざundefしています.
# でもString.newはあるんだから,あっても良かったのかなあ.
rubyの場合メソッドのundefという機能があるので,スーパークラ
スのメソッドをサブクラスが必ず持っているとは限らないのです.
ちなみにrubyではnewはC++でいうところのコピーコンストラクタの
機能を持つとは限りませんので,
SomeClass.new(obj)
でそのオブジェクトのコピーが出来るとは限りません.
さてもともとの質問に返ると,クラスをCで定義すべきかrubyで定
義すべきかはメソッドをなにで記述するかによると思います.メソッ
ドが全部rubyで記述されるクラスならrubyで定義した方が良いと思
いますし,メソッドがCで記述されるクラスならCで定義したら良い
と思います.
メソッドをなにで記述するかは,実行効率やrubyからは直接アクセ
スできない機能を使うかどうかで決まると思います.
まつもと ゆきひろ /:|)