書式設定のあるオブジェクト属性のリストで、ラッピングおよびアンカー機能を利用する必要がある状況があります。
文字列テンプレートでリストを作成し、直接プロパティにアクセスするだけの場合は null 値を取り除くことができます。ただし、一部の属性を条件付きでフォーマットできるようにしたいと考えています。たとえば、テンプレートが与えられます。
PrintItem(item) ::= <<
<item.Count> <strip([item.Name, item.Value, PrintVat(item.Vat), item.Id]); separator=""\n"", anchor>
>>
PrintVat(vat) ::= "<if(vat)>Total VAT <vat><endif>"
および値を持つオブジェクト
Count = 2
Name = Tasty Chicken
Value = £100
Vat = £20
Id = 1
生み出すだろう
2 Tasty Chicken
£100
Total VAT £20
1
同じオブジェクトを渡したが、Value に null 値を指定すると、生成されます
2 Tasty Chicken
Total VAT £20
1
ストリップはヌルを削除するためです。ただし、Vat に null 値を持つ最初のオブジェクトを渡すと、
2 Tasty Chicken
£100
1
テンプレートは常に空の文字列に解決されるためです。空の文字列を null に変換する回避策はありますか?
ここでの明らかな回避策 StringTemplate 3: how to filter a list? テンプレートでコンパイル例外をスローするため、機能しません。具体的には、マップの値として「何もない」ことは好きではありません。その投稿のように値を明示的に null にマップできれば、必要なものが得られます。