まつもと ゆきひろです

In message "[ruby-list:2402] about TCPserver"
    on 97/03/22, MAEDA Shugo <ender / pic-internet.or.jp> writes:
|
|前田です。
|
|今、rubyでSKKサーバーを書いてるのですが、ちょっとわからないところが
|ありますので、よろしくお願いします。

おお,できたらぜひ公開してくださいね.

|TCPserverのサブクラスだとインスタンス変数を持てないみたいなのですが、なぜ
|なのでしょう?

そうなんです.組込みの一部のクラスはインスタンス変数を持てま
せん.インスタンス変数を持てないクラスは以下の通りです.

  nil
  TRUE
  FALSE
  String
  Regexp
  Array
  Hash
  Fixnum
  Bignum
  Float
  IO(とそのサブクラス File,Socketなど)
  Dir
  Thread

です.

|でも、よく考えたらわざわざ継承しなくても、委譲で十分ですね。

これらのクラスに関してはそういう使い方をしてください.全クラ
ス(Fixnumは除く)にインスタンス変数を持てるようにしても良いの
ですが,各オブジェクトサイズが4バイト大きくなるのでちょっと
抵抗があります.

|それと全然関係ないのですが、
|
|alias foo bar
|
|とした時にfooをオーバーライドしてもbarはそのままのようなのですが、
|barも変更したい場合は同じことを二回書かないといけないのでしょうか?

aliasはメソッドのその時点の定義を保存するためのものですから,
barを再定義してfooも変わっては困ります.そういう使い方には

  def foo(*args)
    bar(*args)
  end

のような方が良いでしょう.

|あと前から気になっていたのですが、Rubyとrubyはどう区別されてるのでしょう?
|最初はコマンド名がrubyで言語名はRubyかと思ったのですが、そういうわけでも
|ないようです。ひょっとして行頭の時はRubyとか?
|語源も気になります。(perl->真珠<->ルビー?)

ここで話題になっているオブジェクト指向スクリプト言語の名前は
ruby(小文字)です.大文字で始まるrubyは行頭か,編集ミスです.

rubyの処理系は私がメンテしているものしかなく,他に作られる可
能性もなさそうなので当面のところ言語と処理系は区別していません.

語源は perl->pearl(6月の誕生石)->ruby(7月の誕生石) というこ
とになっています.
                                まつもと ゆきひろ /:|)