[#31166] is_ruby_native_thread() — Masahiro Sakai (酒井政裕) <masahiro.sakai@...>

酒井です。

16 messages 2007/07/08
[#31269] Re: is_ruby_native_thread() — Nobuyoshi Nakada <nobu@...> 2007/07/21

なかだです。

[#31270] Re: is_ruby_native_thread() — Hidetoshi NAGAI <nagai@...> 2007/07/22

永井@知能.九工大です.

[#31298] retryの使い方 — eklerni <eklerni@...>

松尾といいます。

52 messages 2007/07/25
[#31299] Re: retryの使い方 — SASADA Koichi <ko1@...> 2007/07/26

 ささだです。

[#31300] Re: retryの使い方 — eklerni <eklerni@...> 2007/07/26

松尾です、返信ありがとうございます。

[#31303] Re: retryの使い方 — Yugui <yugui@...> 2007/07/26

Yuguiといいます。

[#31306] Re: retryの使い方 — eklerni <eklerni@...> 2007/07/26

松尾といいます。

[#31308] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/07/26

In article <46A909DD.1070405@for.mail-box.ne.jp>,

[#31310] Re: retryの使い方 — eklerni <eklerni@...> 2007/07/26

Tanaka Akira さんは書きました:

[#31314] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/07/30

In article <46A92530.80507@for.mail-box.ne.jp>,

[#31315] Re: retryの使い方 — eklerni <eklerni@...> 2007/07/30

Tanaka Akira さんは書きました:

[#31316] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/07/30

In article <46AD7A16.8080509@for.mail-box.ne.jp>,

[#31317] Re: retryの使い方 — eklerni <eklerni@...> 2007/07/31

松尾です。

[#31381] Re: retryの使い方 — SASADA Koichi <ko1@...> 2007/08/12

 ささだです。

[#31422] Re: retryの使い方 — Yukihiro Matsumoto <matz@...> 2007/08/15

まつもと ゆきひろです

[#31425] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/08/15

In article <E1ILDTi-0005T6-Be@x31>,

[#31426] Re: retryの使い方 — Yukihiro Matsumoto <matz@...> 2007/08/15

まつもと ゆきひろです

[#31433] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/08/16

In article <E1ILKn6-0003Nv-0f@x31>,

[#31435] Re: retryの使い方 — Yukihiro Matsumoto <matz@...> 2007/08/16

まつもと ゆきひろです

[#31447] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/08/16

In article <E1ILVN9-0006xJ-7I@x31>,

[#31450] Re: retryの使い方 — Tanaka Akira <akr@...> 2007/08/17

In article <E1ILq4x-0002Bs-Lg@x31>,

[#31451] Re: retryの使い方 — Yukihiro Matsumoto <matz@...> 2007/08/17

まつもと ゆきひろです

[ruby-dev:31306] Re: retryの使い方

From: eklerni <eklerni@...>
Date: 2007-07-26 20:53:54 UTC
List: ruby-dev #31306
松尾といいます。
> Tanaka Akira さんは書きました:
> 実際にはどのようなユーザー定義ループを作りたいんでしょう?
>
> 普通のイテレータではうまくいかないんでしょうか。
前回のはwhileを使わずにwhileを定義するにはretryが必要、という要旨の発言
ですが、
実際にretryがあったほうがうれしい場面を考えてみると、たとえば

def foo
while 条件
yield #ループ本体(Y)
end
#なんらかの処理(A)
end

みたいなメソッドを書いたときに、yieldとyieldの間と#なんらかの処理(A)の後で
共通の#後処理(B)をしたいとします。(Y)(B)..(Y)(B)(Y)(A)(B)みたいに。すると

def foo
while 条件
#後処理 if 二回目のループからtrueになるフラッグ
yield
end
#なんらかの処理
#後処理
end

みたいになって、#後処理のコードが分かれちゃうんですが、retryを使えば

def foo
yield
retry if 条件
#なんらかの処理
ensure
#後処理
end

とロジックがすっきりする場面もあります。

> Yuguiといいます。
>
> 知りませんでした。驚きです。
> しかし、このretryがあり得るならアナロジーでProc#retryが欲しくなりませ
んか。
どこに戻るのかわからなくなりそうですね。でも
無名関数として振舞うことが期待されているlambdaには欲しいかな、と思います。

あとささださんへ。lambdaについてですが、

def foo &po
lambda(&po).call
 p :methodend
end

foo{return} #1.9#unexpected return (LocalJumpError) #1.8#=>:methodend
foo(&proc{return}) #1.9#unexpected return (LocalJumpError) #1.8#=>:methodend

1.8だとどちらもnextのように働きますが、1.9だとunexpected return
(LocalJumpError)になります。
lambdaの挙動としては1.8のようにブロックを抜けるほうを期待しちゃうんです
が、どうでしょう?


In This Thread