[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
>From: matz@zetabits.com (Yukihiro Matsumoto)
まつもと ゆきひろです
[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>
[ruby-dev:11428] からの続きですが、threadは切りました。
高橋征義です。用語について。
At Wed, 8 Nov 2000 20:44:55 +0900,
高橋征義です。
At Thu, 9 Nov 2000 13:30:34 +0900,
まつもと ゆきひろです
[#11447] gets は secure? — Kazuhiro NISHIYAMA <zn@...>
出力がInsecureなのに入力はsecureなのでしょうか?
[#11467] debug write in regex.c? — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
[#11500] rb_to_integer/rb_to_int — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>
岡と申します。
なかだです。
まつもと ゆきひろです
なかだです。
岡です。
なかだです。
なかだです。
岡です。
なかだです。
[#11569] blocking on socket? — Shugo Maeda <shugo@...>
前田です。
[#11591] object.c パッチ — Kazuhiro NISHIYAMA <zn@...>
使われてなかったnil_plusの削除とOBJ_INFECTへの変更です。
[#11611] return value of waitpid2 — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
荒井です。いや、新井です。(よくあることさ)
まつもと ゆきひろです
新井です。
新井です。
[#11618] Re: class variable — "Koji Arai" <jca02266@...>
新井です
なかだです。
まつもと ゆきひろです
> まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
[#11641] eval too slow — Wakou Aoyama <wakou@...>
青山です。
[#11650] conflict of NODE_DREGX_ONCE — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
まつもと ゆきひろです
[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>
In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,
In article <hvor93w5wb8.fsf@coulee.m17n.org>,
In article <hvoofz05uwz.fsf@coulee.m17n.org>,
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In article <E141eaC-0003w0-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E142ZqF-0004rX-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E143Zem-000271-00@ev.netlab.zetabits.co.jp>,
まつもと ゆきひろです
In article <E143amj-00028V-00@ev.netlab.zetabits.co.jp>,
[ruby-dev:11440] class Character (was: Ruby I18N)
[ruby-dev:11428] からの続きですが、threadは切りました。
At Wed, 8 Nov 2000 14:26:14 +0900,
matz@zetabits.com (Yukihiro Matsumoto) wrote:
> 「文字オブジェクトの必要性」を感じさせてくれる説得メールを待っ
> てます。;-)
って事で、Characterクラスを導入した方が嬉しい理由を上げてみます。
# class Character -> 文字クラス
# class Stringとそれ以下すべてのクラス -> 文字列クラス
# class Stringを表わすときは class Stringと書く
# 個々のコード毎に文字列クラスの下位クラスを作る事を前提としています
user side
=========
文字列クラスの method `[]'が文字クラスの instanceを返す事により、文字と
いう文字列よりも粒度の細いオブジェクトを自然に扱う事が可能
implementer side
================
文字を抽象化する事により将来内部実装に変更が必要になったときにも user
sideへの影響を小さくする事が可能
互換性問題
==========
文字列クラスを「文字クラスを要素として持つ Arrayクラス」として実装せず、
現在の文字列クラスと文字クラスを独立させて実装することにより文字列クラス
の method `[]'や `[]='など将来文字クラスを返す事を期待される method以外
の互換性は確保できるのではないだろうか?
さらに文字クラスで Character#to_iの様に従来の String#[]が返す Fixnumを取
りだす事を可能にする事により互換性を極力保持する様にする。
速度的問題
==========
まず「おおむね一つの文字コード系で閉じているのが普通」であり、「ほとんど
の場合文字列クラスだけで事足りる」を前提とした場合、文字クラスの実装はあ
る程度遅くても良いのではないでしょうか?
String#[]=などは現在の実装と比べてコストの高い methodとなるが、上記の仮
定が真であれば文字列クラスの method `[]='の実装は self.ces == arg.cesの
比較分だけしかコストが増えないので問題は無いのではないか?
method []=の中で、argumentとして渡された文字クラスの instanceは selfが保
持可能なコードに「自動的」に変換されるか、または Exceptionを投げる事にな
ると思う。
(この自動変換にまつもとさんは抵抗があると書かれていますが、もし良ければ
理由を教えてください)
String#[]=の場合はコードを持たないただの byte列なので渡された文字クラス
の instanceが持つ byteを指定された場所にただ代入する。今と変らない。文字
列としての一貫性をただの byte列である Stringクラスの instanceに求めては
いけない。
まとめ
======
現在の文字列クラスに影響を与えず、さらに粒度の細かな文字クラスを導入する
事も可能なはずである。独立した実装の二つのクラスが「シームレスに統合可能
なら」ば、kitchen sinkを目指す Rubyとしては取り入れるべきではないだろう
か?
ps. いくつか IRCの会話から引用させてもらいました(__) > 某氏。
--
yashi