Sections
|
<( 配列のレンダリング )>
配列は一度にオブジェクト全体をレンダーしたいときにとても役に立ちます. 配列の要素すべてをレンダーするには, 空の括弧を使って次のようにします:
arrayOfDatesのすべてのDate要素を列挙します: <(arrayOfDates[])>
|
個々の要素を指定しなくてよいのは便利なのですが, 要素の間にHTML改行(<br>)を置きたい場合はどうすればよいのでしょうか. はじめか終わりに改行を加えたレンダー定義を作ってもよいのですが, 余計な改行も入ってしまいます.
うれしいことに, DML2には配列スペーサーとう機能があります. 配列要素間に任意のコードを追加するためには, 配列の参照の直後に<(&spacer)>, そして追加したいコード, さらに最後に<(/&spacer)>を続けます.
HTML改行を間に挟んでarrayOfDatesのDate要素をすべて表示します: <(arrayOfDates[])><(&spacer)><br><br><(/&spacer)>
|
ここで新しい問題があります: DML2オブジェクト配列にあなたのウェブサイトのニュースを書いてあるとしましょう. しかし(帯域節約のため)メインページに最新の5つだけを表示したいとしましょう. このために, 配列の範囲指定が使えます. 通常はレンダーしたい要素番号を置く括弧内に, はじめの要素番号とコンマ, そして最後の要素番号を書きます. たとえば1-5番目の要素をレンダーするには, <(arrayOfDates[0,4])>と指定します. この後のスペーサーを続けることもできます.
ところで配列の最後5つをレンダーするにはどうすればよいのでしょう. 配列の要素数が分からなければハードコードすることもできません. そのかわり, 範囲にポンド記号(#)を指定するのです. ポンド記号は配列の要素数を表します.
! | Note:
配列の始めの要素が0である点に注意しましょう. よって, ポンド記号(配列の要素数を返します)は配列の外を参照することになります. つまり, たとえば5つの要素がある場合, 最後の要素は4として参照されますが, ポンド記号は5を返します.
|
もちろん, まだ最新5つだけをレンダリングする方法は示していません. これは範囲指定に数式(加減算)を指定すればよいのです. 結果は暗号のようですが, よく考えればすぐに分かります. 次の例を参照しましょう.
arrayOfDatesの最後の5つの要素です: <(arrayOfDates[#-5,#-1])>
最初の5つです: <(arrayOfDates[0,5])>
|
! | Note:
配列の外を参照しても, DML2は気にせず何もしません. エントリが1つだけのChangeLogのようなものを, 最後の5つのエントリをレンダーするコードで処理するような場合に有用です. 最後の5つを処理するよう指示した場合, 要素が5つ以下であれば配列全体がレンダーされます.
|
|
|