arc:enum

Version 23.4.8843


arc:enum

Version 23.4.8843


arc:enum 关键字可以用于枚举对象中的属性,分隔列表,数值范围和多值属性中的值。arc:enum 的主体会执行要迭代集合中的每个元素。

参数

  • item:要对其属性进行迭代的对象的名称。
  • attr:指定迭代哪些属性的匹配表达式。例如,“arc:*”。也可以使用该参数来迭代多值属性的值。
  • prefix:枚举对象基于的前缀。
  • expand:布尔值,指定当遇到多值属性时,arc:enum 如何执行。如果 expand 设置为 true,arc:enum 的主体会将属性中的每个值都执行一次。如果为 false,所有值将会串联在一个字符串值里,只执行单次迭代。默认情况下,arc:enum 不会展开所有值。
  • sep[arator]:如果 expand 参数为 false,则用来连接多值属性值的分隔符。除此之外,如果未定义列表分隔符,则使用分隔符对列表中的值进行标记。默认值为换行符“\n”。
  • list:要枚举的分隔值列表。例如,如果列表为 “violet,indigo,blue,green,yellow,orange,red” 且分隔符为 “,”,那么对每个颜色都将会执行 arc:enum 的作用域。
  • range:以升序或降序枚举时字母或字符的范围;例如,“a..z”,“Z..A”。
  • recurse:是否枚举嵌套属性。默认值为 true。

注意:可以指定 range 属性或 item 属性,但不能两者都指定。除此之外,属性按照字母顺序进行枚举。

控制属性

  • _attr: 被迭代的属性名称。当对多值属性进行迭代时,属性名称将相同,只是会包含索引作为名称的一部分。使用哈希符号(#)将名称和索引分隔开。例如,name#1,name#2等。
  • _index:属性出现在对象中的索引或当前枚举元素在列表中的位置。
  • _value:被迭代的属性的值。对于一个多值属性,expand 和 separator 参数设置决定了 _value 是对一个属性值的引用还是对所有属性值的引用。
  • _count:在一个属性或一个列表中值的数量。
  • _separator:列表中用来分隔值的分隔符。

示例

显示对象名为“input”的属性名称和属性值:

<arc:set item="input" attr="Greeting" value="Hello" />
<arc:set item="input" attr="Goodbye" value="See ya" />
<arc:enum item="input">
  [_attr] is [_value]
  <br/>
</arc:enum> 
goodbye is See ya greeting is Hello

使用 arc:enum list 和 separator 参数枚举一个值的列表。例如,下面的代码列出了在 colors 属性中指定的颜色:

<arc:set attr="colors" value="violet,indigo,blue,green,yellow, orange,red"/>
<arc:enum list="[colors]" separator=",">
  [_value] 
</arc:enum>

要枚举一个范围内的值,使用 range 参数,下面的代码列出了从 a 到 z,从 Z 到 A,以及从1到25的字符集:

<arc:enum range="a..z">
  [_value] 
</arc:enum>
<arc:enum range="Z..A">
  [_value] 
</arc:enum>
<arc:enum range="1..25">
  [_value] 
</arc:enum>

要枚举一个多值元素的所有值,使用 attr 参数来指定多值属性并且将 expand 设为 true:

<arc:set attr="foo.email#1" value="joe@mycompany.com"/>
<arc:set attr="foo.email#2" value="john@mycompany.com"/>
<arc:enum attr="foo.email" expand="true">
    ([_index]) [_attr] -> [_value]
</arc:enum>

上面的示例最终输出了以下的内容:

(1) email#1 -> joe@mycompany.com (2) email#2 -> john@mycompany.com

另请参阅