まつもと ゆきひろです.
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しますよね. そうで
|はなくて, 捕捉されなければそのまま処理を継続するようなものです.
|
|シグナルの無視と同じだと思って下さい.
うーん,なんかイメージ掴めないなあ.
まつもと ゆきひろ /:|)