なかだです。 ruby-devに振ります。 At Sat, 13 Oct 2007 14:44:45 +0900, Martin Duerst wrote: > >> >e.g. > >> > Iconv.open("utf-8", "euc-jp") {|cd| > >> > cd.iconv("\xa1\xa2") {|errinfo| ...} > >> > } > >> > >> I don't understand this double block structure, can you explain? > > > >This idea is that Iconv#iconv and others yields error info on > >failures. > > すみません。外側の cd が conversion descriptor と読めなかったです。 cdという略記法は、元はiconv(3)のman pagesでしばしば用いられてい るものなので、ext/iconvでも流用しています。 > 僕的にはそこのところに {|errinfo| } を持って来れると一番うれしいです。 Iconv#openのブロックは、IO#open同様にブロック終了時にIconvインス タンスを自動的に破棄するようになっています。後方互換性だけでなく、 他のクラスのopenメソッドとの類似性などからも、これは変えたくあり ません。 また、クラスを指定できるrescueに比べて、何を処理するのか明確さに 劣るように思えます。 代わりに、こういうものを思い付きましたがどうでしょうか。 Iconv.open("utf-8", "euc-jp") {|cd| cd.on_illegal_sequence {|errinfo| ...} cd.iconv("\xa1\xa2") } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦