From: matz@... (Yukihiro Matsumoto) Date: 2000-06-22T11:08:04+09:00 Subject: [ruby-list:23442] Re: catch/throw まつもと ゆきひろです In message "[ruby-list:23422] catch/throw" on 00/06/22, NAWATE Masahiko writes: |またもや初心者の質問なんですが、Ruby本のp.65に出てくるcatch/throwの |記述が全くわかりません。やりたいことは、BASIC的な記述だと | |100 FOR N=0 TO M |110 IF A(N) = B |120 X=1 |130 GOTO 200 |140 ELSE X=0 |150 NEXT |200 PRINT X |300 END | |というようなものを | |for n in 0..m | if a[n] == b | x = 1 | throw :tag | else | x = 0 | end |end |catch(:tag) |print x | |というように本を見て作ったのですが、 | |`catch':yield called out of iterator (LocalJumpError) | |となります。どうも使い方がわかっていないようですが、どこがいけ |ないのでしょうか? catch(:tag) do for n in 0..m if a[n] == b x = 1 throw :tag else x = 0 end end end print x