ループの抜けかた

ループを抜けるにはbreakです。breakだけだと実行中ループを抜けるだけですが、ラベルを使うと多重ループの内側から一気に抜けることができます。

下記サンプルでは3つのループスクリプトがあります。それぞれ2重のループになっています。

  • 1つめは普通。
  • 2つめは、内側ループにbreakを入れたもの。内側を抜けても外側ループは引き続き実行されます。
  • 3つめは、外側ループにラベルを設定して、内側ループにbreakを入れたもの。内側ループを抜けるときにラベルのところまで行くので、外側ループも抜けることになります。

ということで実行結果みたら、私が言いたいことがわかると思います。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee">
  <simplelayout spacing="10"/>
  <text id="txt1" multiline="true" fontsize="12"/>
  <handler name="oninit"><![CDATA[
    var i = 0;
    do{
      var j = 0;
      do{
        txt1.addText(String(i)+j+" | ");
        j++;
      }while(j<10)
      i++;
      txt1.addText("\n");
    }while(i<5);
  ]]></handler>
  <text id="txt2" multiline="true" fontsize="12"/>
  <handler name="oninit"><![CDATA[
    var i = 0;
    do{
      var j = 0;
      do{
        txt2.addText(String(i)+j+" | ");
        j++;
        if(i==2 && j==5) break ;
      }while(j<10)
      i++;
      txt2.addText("\n");
    }while(i<5);
  ]]></handler>
  <text id="txt3" multiline="true" fontsize="12"/>
  <handler name="oninit"><![CDATA[
    var i = 0;
    XXX:do{
      var j = 0;
      do{
        txt3.addText(String(i)+j+" | ");
        j++;
        if(i==2 && j==5) break XXX;
      }while(j<10)
      i++;
      txt3.addText("\n");
    }while(i<5);
  ]]></handler>
</canvas>
breakloop.txt · 最終更新: 2010/02/26 00:49 by ason
Copyright © 2008~ずっと ason(minamotonoason@gmail.com