<foreach>...</foreach>
タグを使って特定のループ処理ができます。ここでは、その使い方を学習します。sdl=com.traction.sdl.tutorial.lesson08
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SDL Tutorial</title> <html.css url="/html/css/sdllessons/styles.css" /> </head> <body> <h1>Lesson 08 - ForEach</h1> <!-- 例(1): foreach.current を使って現在の値を取得する --> <div class="example"> <h2>Example (1)</h2> <p> <foreach list="1,2,3,4,5"> __foreach.current__<loop.last not>, </loop.last> </foreach> </p> </div> <!-- 例(2): 値を「fruit」というローカル変数に代入する --> <div class="example"> <h2>Example (2)</h2> <p> <foreach list="りんご,みかん,レモン,桃,あんず" set="fruit"> ${fruit}<loop.last not>, </loop.last> </foreach> </p> </div> <div class="example"> <!-- 例(3): リストを予めグローバル変数で設定しておく --> <global.set name="myList" value="富士山,駒ケ岳,トムラウシ山,筑波山,蛭ヶ岳" /> <h2>Example (3)</h2> <p> <foreach listvariable="myList" set="mountain"> ${mountain}<loop.last><br>登ったよ!<else>, </loop.last> </foreach> </p> </div> </body> </html>
list=
パラメーターで渡されたリスト中のそれぞれの値をループに渡して処理します。list=
パラメーターの値は数値でも文字列でも構いません。値の区切り記号は、既定で半角カンマ記号ですが、separator=
パラメーターを使って別の文字を指定できます。<!--- 半角スペースで値を区切る例 --> <foreach list="北海道 秋田 福島 奈良 沖縄" separator=" "> <loop.first><ul></loop.first> <li>__foreach.current__</li> <loop.last></ul></loop.last> </foreach>
list="1,2,3,4,5"
として、単純に 1 〜 5 の数値をループに渡しています。ループは5回実行されます。<foreach list="1,2,3,4,5"> __foreach.current__<loop.last not>, </loop.last> </foreach>
foreach.current
タグで参照できます。<loop.last not>, </loop.last>
により、ループの最終回以外でカンマと空白を挿入していることに注目してください。メモ: 変数については次回の SDL Lesson 9 - グローバル変数やローカル変数を扱う で詳しく解説します。
list=
の値を set=
で指定した「fruit」という名前のローカル変数に代入しています。こうすることで、現在実行中のループに渡された値をローカル変数名で参照できます。もちろん、foreach.current
を使っても参照できます。<foreach list="りんご,みかん,レモン,桃,あんず" set="fruit"> ${fruit}<loop.last not>, </loop.last> </foreach>
${変数名}
#$変数名$
<var.value name="変数名" />
<var.get name="変数名" />
<variable.local.value name="変数名" />
<variable.local.get name="変数名" />
メモ: 変数については次回の SDL Lesson 9 - グローバル変数やローカル変数を扱う で詳しく解説します。
<foreach>
では list=
ではなく listvariable=
パラメーターを使い、「myList」という名前の変数の値をリストとして参照するようにしています。<global.set name="myList" value="富士山,駒ケ岳,トムラウシ山,筑波山,蛭ヶ岳" /> <foreach listvariable="myList" set="mountain"> ${mountain}<loop.last><br>登ったよ!<else>, </loop.last> </foreach>
list=
を使うと次のように書き換えられます。<global.set name="myList" value="富士山,駒ケ岳,トムラウシ山,筑波山,蛭ヶ岳" /> <foreach list="${myList}" set="mountain"> ${mountain}<loop.last><br>登ったよ!<else>, </loop.last> </foreach>
${変数名}
#$変数名$
<global.value name="変数名" />
<global.get name="変数名" />
<variable.global.value name="変数名" />
<variable.global.get name="変数名" />
/type lesson08
と入力して Enter キーを押すと、下図のような「Lesson 08 - ForEach」ビューが表示されます。<foreach>...</foreach>
タグは、特定の回数のループ処理を行うためのタグである。list="値1,値2,値3,..."
の形で指定する。listvariable="変数名"
としてもOK。foreach.current
を使って参照できる。set="変数名"
を使うと、ループ内でローカル変数として参照できる。lesson08.properties
lesson08.sdl
08_properties.png
08_sdl.png
example.png