for in else end
今日、Zope ガイドを購入した。そして、今日、読み終えた(マンガかよ)。
この本を購入したきっかけはenbug diary(2008-01-31)を読んだことです。この記事を読んで、Zope を知れば、未来を知ることができるかもしれない。と思ったのですが、この本には私が考えているような未来はありませんでした。
私にとって有益なことは DTML (ERB みたいなもの) の foreach else でした。
Ruby で概念的なものを書くと、 以下のような感じでしょうかね。
for i in ary puts(i) else puts("要素がありません。") end
これは使えるかもしれません。
私は Rails のテンプレートで、配列の要素があったらループの処理、なかったら「要素がありません」といった注意書きを表示、ということしています。
このとき、for else end があれば ERB のテンプレートに次のように記述できると思います。
<ol> <%- for sp in SampleProgram.find(:all, :order => "updated_at") -%> <li><%= h(sp.title) %></li> <%- else -%> <li>サンプルプログラムが登録されていません。</li> <%- end -%> </ol>
普通に for を使うとこんな感じ。
<ol> <%- sample_programs = SampleProgram.find(:all, :order => "updated_at") -%> <%- if sample_programs.length > 0 -%> <%- for sp in sample_programs -%> <li><%= h(sp.title) %></li> <%- end -%> <%- else -%> <li>サンプルプログラムが登録されていません。</li> <%- end -%> </ol>
で、パッチです。みたいにすぐにパッチを作成できるスキルがあればいいのですが、そんなわけはありません。9/25 には ruby-1.9.1 が出て、仕様が凍結されちゃうんですよね。誰かパッチを作ってくれないかな。