[#20227] dyna_vars problem? — Tanaka Akira <akr@...17n.org>

しばらく前から、稀に Ruby が core を吐くという問題を追いかけているので

15 messages 2003/05/19
[#20234] Re: dyna_vars problem? — matz@... (Yukihiro Matsumoto) 2003/05/19

まつもと ゆきひろです

[#20236] Re: dyna_vars problem? — Tanaka Akira <akr@...17n.org> 2003/05/19

In article <1053363181.529491.30320.nullmailer@picachu.netlab.jp>,

[ruby-dev:20239] Re: ループ条件中の break/next/redo (PR#460)

From: nobu.nakada@...
Date: 2003-05-20 02:20:57 UTC
List: ruby-dev #20239
なかだです。

At Sat, 10 May 2003 17:35:03 +0900 (JST),
nobu.nokada@softhome.net wrote:
> RHG 13.3.6の最後の文、
>   while next do nil end
> は無限ループにならずにパーサではねられますが、
>   while (next;false) do end
> とすると有効な式として無限ループになります。
> 条件式内でのbreak/next/redoはループ本体内とは別扱いにするべき
> ではないかという気がします。

要するに、条件式は(break/next/redoに関して)ループの内側として振
舞うべきか外側か、ということです。

最初、外側とみなすべきだろうと思ったんですが、Bourne-shellと
Perlでは内側として振舞うようなので、現状のままにしといたほうが
いいのかも知れません。

$ ash -c 'i=0; while [ $i -lt 3 ]; do echo $i; i=`expr $i + 1`; done;echo end'
0
1
2
end
$ ash -c 'i=0; while break; [ $i -lt 3 ]; do echo $i; i=`expr $i + 1`; done;echo end'
end

$ perl -e '$i=0; while ($i < 3) {print $i; $i++};print "end\n"'
012end
$ perl -e '$i=0; while (last, $i < 3) {print $i; $i++};print "end\n"'
end

他に条件式にbreakとかを書ける言語ってありましたっけ。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next