[#8168] {literal}#[]= — EGUCHI Osamu <eguchi@...>

えぐち@エスアンドイーです。

16 messages 1999/11/01
[#8172] Re: {literal}#[]= — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8176] Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

35 messages 1999/11/01
[#8178] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8212] Re: Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/02

もりきゅうです。

[#8213] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/03

まつもと ゆきひろです

[#8232] 例外を処理する 2 項演算子 — Kazunori NISHI <kazunori@...> 1999/11/05

西@九大です。

[#8233] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/05

まつもと ゆきひろです

[#8236] Re: 例外を処理する 2 項演算子 — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/05

もりきゅうです。

[#8266] Re: 例外を処理する 2 項演算子 — EGUCHI Osamu <eguchi@...> 1999/11/07

えぐち@エスアンドイー です。

[#8269] Re: 例外を処理する 2 項演算子 — gotoken@... (GOTO Kentaro) 1999/11/07

In message "[ruby-dev:8266] Re: 例外を処理する 2 項演算子"

[#8271] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/08

まつもと ゆきひろです

[#8274] Re: 例外を処理する 2 項演算子 — keiju@... (石塚圭樹) 1999/11/08

けいじゅ@日本ラショナルソフトウェアです.

[#8204] Re: [ruby-list:18281] Re: アクセス制御について — Shugo Maeda <shugo@...>

前田です。

12 messages 1999/11/02
[#8205] Re: [ruby-list:18281] Re: アクセス制御について — Shin-ichiro Hara <sinara@...> 1999/11/02

原です。

[#8315] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/15
[#8316] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/15

まつもと ゆきひろです

[#8369] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/18

新井です。

[#8374] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/18

まつもと ゆきひろです

[#8384] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/19

新井です。

[#8405] 1.4.3 (Re: Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{}) — matz@... (Yukihiro Matsumoto) 1999/11/24

[#8319] Re: Exception handling — Jun Adachi <adachi@...>

安達@沖データと申します。

21 messages 1999/11/16
[#8350] Re: Exception handling — Kazunori NISHI <kazunori@...> 1999/11/17

西@九大です。

[#8446] [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/29
[#8449] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/11/30

まつもと ゆきひろです

[#8463] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/11/30

西@九大です。

[#8474] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/01

まつもと ゆきひろです

[#8476] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/01

西@九大です。

[#8487] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/02

まつもと ゆきひろです

[#8494] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/02

西@九大です。

[#8451] new Hash (Re: [ruby-list:19043]) — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/11/30

[ruby-dev:8319] Re: Exception handling

From: Jun Adachi <adachi@...>
Date: 1999-11-16 05:27:41 UTC
List: ruby-dev #8319
安達@沖データと申します。

#読むのが遅れてまして、鈍亀フォローになるのですが、、、

私もbegin .. rescue .. endを始めて見た時に、
「『勝手に終了する分には、気にしない』という使い方の時は良いけれど、
  ある程度チェックしようとすると面倒臭いかなぁ。完全にチェックしたい場
  合には、これで何も問題ないんだけれど。Unixのシグナル関数のように事前
  登録性にできたらよいのに」
と思っていました。

それで、下のようなコードを書いてみたけれど動かないんで、それきり忘れて
いました。

#まぁ、動かないコードですから色んな意味で勘違いが入っていると思います
#が、意図を読み取って下さい。(_O_)
--
#!/usr/local/bin/ruby

=begin
この定義は標準のクラス定義の一部になって欲しい
=end
class File
  @error_handlers =
    {'open' => { Errno::ENOTDIR => Errno::ENOTDIR,
(略)
                 Errno::EINVAL => Errno::EINVAL }}

  def handler (method, errno)
    (@error_handlers[method])[errno]
  end

  alias original_open open
  def open (path, mode="rw")
    begin
      original_open(path, mode)
    rescue Errno::ENOENT
      h = handler('open', Errno::ENOENT)
      if (h.is_a(Proc)) then
        h.call
      else
        h
      end
    end
  end
end

=begin
これ以降は、ユーザが自分で書きたい
=end

class ErrorObject < Object
  def to_i
    0
  end
end

File.handler('open', Errno::ENOENT) = ErrorObject.new

counter = File.open("henoheno").to_i
print "counter = #{counter}\n"
--

このコードを書きながら、「欲しいなぁー」と思った機能は、次の二つです。

(1) ユーザが定義可能なエラーハンドラー辞書と標準クラスからの呼出し。
  さらに贅沢を言うと、PostScriptの辞書みたいにスタッカブルになっている
  と、以前の状態に簡単に戻れるのでうれしい。

(2) 単独のrescue節で複数のエラーを処理できるように、現在捕まえているエ
  ラーオブジェクトを仮引数で受け取りたい。

#こっちは、私が知らないだけで(仮引数でない形では)できるんじゃないかと
#思うのですが、、、

CGIの件だとこんなので対応できるんじゃないかと思うんですが、やっぱり演
算子の方がよいんでしょうか?>最初のメールの方(もりきゅうさん???)

その場で毎回書かないといけない現行方式や演算子形式よりも、こちらの方が
サボれるんではないかと思いますが、いかがでしょう?これであれば、別に新
しい識別子を導入するわけでもないですし。
--
*------*				adachi@okidata.co.jp
|人∧鷲|				沖データ 第一研究所
| <女> |				安達 淳
|牛∨獅|
*------*

In This Thread

Prev Next