Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SLAX 功能概述

Junos OS 版本 12.2 和更高版本中支持的 SLAX 语言版本 1.1 支持功能。当脚本的复杂性增加或代码段出现在多个位置时,您可以对代码进行模块化并创建功能。功能仅在明确调用时接受参数并运行。

注意:

Junos OS 版本 14.2 和更高版本中支持的 SLAX 语言版本 1.2 支持 SLAX 元素作为模板和功能的参数。

与模板相比,功能具有多个优势,包括:

  • 参数按位置而非名称传递。

  • 返回值可以是对象,而不是产生的树片。

  • 可在表达式中使用功能。

  • 可以动态解决功能(使用 EXSLT dyn:evaluate())。

在 SLAX 中,您可将功能定义定义定义为脚本中的顶级语句。功能定义包含 function 关键字、功能名称、一组参数和括号划定的代码块。功能名称必须为合格名称。该参数列表是参数名称的逗号分隔列表,根据功能调用进行定位分配。跟踪参数可以具有默认值。或者,您也可以使用语句定义功能块内的 param 功能参数。语法是:

回路值可以是可扩展值、XML 元素或 XPath 表达式,也可以是发出要退还值的一组说明。

如果功能调用中的参数比定义中的参数少,则默认值用于任何跟踪参数。如果功能调用中的参数多于定义中的参数,则功能调用会生成错误。

以下示例定义了该功能,该功能size有三个参数:widthheightscale。默认值为 scale 1。如果功能调用参数列表不包括scale该参数,则计算为该参数使用 1 的默认值。该功能的回报值是包含在一个<size>元素中的 、 heightscale变量的产品width

在主匹配模板中,功能调用使用源 XML 文件中从每个 graphic/dimension 元素中选择的宽度和高度数据。脚本评估功能, copy-of 语句会将结果树的返回值作为元素的内容 <out>

以下功能定义使用 param 语句来定义参数,而不是逗号分隔列表。该功能的行为与上一个示例中的行为相同。