[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[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しますよね. そうで
|はなくて, 捕捉されなければそのまま処理を継続するようなものです.
|
|シグナルの無視と同じだと思って下さい.
うーん,なんかイメージ掴めないなあ.
まつもと ゆきひろ /:|)