読了: 約 1 分
ftl(http://freemarker.org/)を使用していると頻出するのがlocalとassign。
どちらもローカル変数なのですが、使い方を間違えると意図しない動きになるのでメモしておきます。
下記が何故trueになるのか、、というところで悩む方がいるかもしれませんが、
<#local x = true> <#local y = false> <#local z = 0> <#if z = 0> <#assign x = false> </#if> ${x} // true
<#if>や<#list>の中でローカル変数を定義すると、その中でしかその値は使えず、
ループや条件分岐を抜けた場合は外側のlocal変数に定義されているtrueが有効になるという当たり前のシンプルな答えでした。
<#assign x = true> <#if z == 0> <#assign x = false> </#if>
の場合は、有効になるので注意が必要です。