なかだです。

At Wed, 17 Apr 2002 16:56:16 +0900,
Tanaka Akira wrote:
> > うーん、どうしたものか。そしたらfailedじゃなくてrestとかになる
> > ような。全部aliasしとこうかなぁ。
> 
> えぇ、converted との対としては rest が自然だと思います。

unconvertedとか、考え出すときりがないですねぇ。

> > success, failedは同じ、source = ["b\xa1\xa1"], pos = 1になりま
> > す。
> 
> うぅむ。source の仕様が理解できません。
> 
> 「入力となる String (ないしは nil)のどれかを単一の要素として持つ Array」
> という解釈しか思いつかないのですが、単一要素だったら Arrayを生成する意
> 味がありませんし...

Iconv.iconvで複数のStringを渡されたときに、エラーになったString
以降がそのまま収められるようになってます。で、最初failedはやめ
ちゃおうかと思ったんですが…。

> > 入出力に対して複数のiconvを使うのは、iconvの仕様上無理があると
> > 思います。シフトステートに対する操作はリセットだけで、退避して
> > おいたりすることはできませんから。文字参照を使うことを前提にす
> > るなら、むしろ一度UCS-4にしてしまったほうがいいかも。
> 
> この、退避ができないということを納得するのも厄介でした。最終的には、
> POSIX の iconv の説明を読んで iconv_t の中身には file descriptor が入っ
> ている可能性もあるということを読んであきらめましたが。

初期ステートに戻すシークェンスを返す機能があるんだから、初期ス
テートから現在のステートに移行するシークェンスを返すというのも
あってよさそうな気がしてきました。

> ふむ。でも Iconv#dup は抑制されてないんですね。これでなにか怪しげなこ
> とができるかな?

でもiconv_tは複製されないから結局同じですよ。たぶん、どこかで
closed iconv (ArgumentError)といわれるのがオチじゃないかと。

> > > * retry でループを構成する必要がある。
> > 
> > 一応異常系なのでしょうがないという気もするのですが。まぁ他に手
> > を思い付かなかったというだけなので、もっといい方法があればそう
> > します。
> 
> 私にもいい方法は思いつかないので何か提案するというわけではないんですが、
> 文字参照で出すという状況だと異常系ではない気分になるようで、そのへんの
> 気分とコードのミスマッチが厄介だと思った原因の一つです。

エラーのときにyieldするというのはどうかなとか、今ふと思ったんで
すが。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦