[ruby-list:421] Re: reexecute from rescue [ Re: about exception]

From: matz@... (Yukihiro Matsumoto)
Date: 1996-08-21 04:04:45 UTC
List: ruby-list #421
まつもと ゆきひろです.

In message "[ruby-list:420] Re: reexecute from rescue [ Re: about exception] 	 "
    on 96/08/20, keiju@shljapan.co.jp <keiju@shljapan.co.jp> writes:
|
|けいじゅ@SHLジャパンです. 

|例外を使わないで, 例えば以下のように定義するのはできるのですか?
|
|array.delete(elm)
|array.delete(elm) {
|  ...
|}

できます.というか,最近そのように変更しました.ですから,次
のリリースからはそういうことが出来るようになります.

# 次のリリースは例外対応もしているから期待してね.

|ここで質問, このようなメソッドはどのように定義すれば良いのでしょうか? 

メソッドの中で iterator? 述語でイテレータかどうかを判別し,
イテレータであれば yield を呼べば良いと思います.

例:

def delete(ary, arg)
  if ary.include? arg
    ary.delete arg
  elsif iterator?
    yield ary, arg
  end
end

|あと, 別件なのですが, 渡されたイテレータブロックをprocにすることはでき
|ないのでしょうか? やりたいことは, イテレータブロックとして渡されたもの
|を(procとして?)インスタンス変数に保持したいのですが??

イテレータの中でProc.new(またはlambda)をイテレータブロック無
しで実行すれば,上で指定されたイテレータブロックをproc化でき
るはずです.

|私が考えていたのは, 今の例外は捕捉されないと結局exitしますよね. そうで
|はなくて, 捕捉されなければそのまま処理を継続するようなものです.
|
|シグナルの無視と同じだと思って下さい.

うーん,なんかイメージ掴めないなあ.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next