From: Minero Aoki Date: 2001-08-17T12:29:17+09:00 Subject: [ruby-list:30939] Re: [REQ] Regexp#match! あおきです。 In mail "[ruby-list:30937] Re: [REQ] Regexp#match!" Konishi@raax.co.jp (Hiromasa KONISHI) wrote: >  KONISHI Hiromasaです。 > > > 1. Regexp は文字列の解析に使う > > 2. 文字列はユーザインターフェイスであることが多い > > 3. ユーザインターフェイスならばエラーリポートは詳細にすべき > この論法でも、「Regexpはユーザーインターフェイスである」という結論には無 > 理があると思います。 > > 別メールで示されているとおり、Regexpでマッチしない場合。青木さんのいう、 > 例外にしたい場合というのはユーザーインターフェイスとしての例外ですよね。 それでは話が逆です。 In mail "[ruby-list:30931] Re: [REQ] Regexp#match!" I wrote: > 1. Regexp は文字列の解析に使う > 2. 文字列はユーザインターフェイスであることが多い > 3. ユーザインターフェイスならばエラーリポートは詳細にすべき > > なので、解析が失敗した場合の多くは意味を伝えるべき、つまり nil を > 返して自分でエラーの意味を伝えさせるべきと考えられます。しかし、 こっちが Regexp#match で、 > > 1. いったん前処理をして、一定の条件が満たされているはずの場合 > > には失敗は所詮「内部エラー」なので、プログラマにエラーの意味まで > 報告させることはないはずです。そしてこの場合も、デフォルトにする こっちが Regexp#execute です。 Regexp はインターフェイスを作るときに出てくることが多い (その場合プログラマが自分でちゃんとエラーを出すほうがよさそう、 だから一番基本的な match メソッドが nil を返すのは合理的だ)、 そのうえで しかし、 「インターフェイスじゃない**こともわりとある**」 「インターフェイスじゃないときは所詮内部エラー (UI じゃない)」 「その時はさっさと例外を投げてくれればいいじゃないか」 「そういうメソッド (Regexp#execute) があってもいいはずだ!」 ということです。 ------------------------------------------------------------------- 青木峰郎