宏参数的真实值是可以作为变量(person)放在宏定义体中的。使用预定义指令时,参数的值(=号后边的值)可以是FTL表达式。这样,不像HTML,"Fred"和"Batman"的引号就可以不用要了。<@greet person=Fred/>也意味着使用变量的值Fred作为person参数,而不是字符串"Fred"。当然参数值并不一定是字符串类型,也可以是数字,布尔值,哈希表,序列等…也可以在=号左边使用复杂表达式(比如someParam=(price + 50)*1.25)。
自定义指令可以有多个参数:
<#macro greet person color> <font size="+2" color="${color}">Hello ${person}!</font> </#macro>
当调用这个宏的时候,你仅仅可以使用在macro指令中定义的参数,同时也必须给出在宏中定义所有参数的值。
给定默认值
很多情况下需要给一个参数指定一个相同的值,所以我们仅仅想在这个值发生变化后重新赋给变量。那么要达到这个目的,在macro指令中必须这么来指定变量:param_name=usual_value。
例如:
<#macro greet person color="black"> <font size="+2" color="${color}">Hello ${person}!</font> </#macro>
根据FTL表达式规则,明白下面这一点是至关重要的,someParam=foo和someParam="${foo}"是不同的。第一种情况,是把变量foo的值作为参数的值来使用。第二种情况则是使用插值形式的字符串,那么参数值就是字符串了,这个时候,foo的值呈现为文本,而不管foo是什么类型(数字,日期等)的。看下面这个例子:someParam=3/4和someParam="${3/4}"是不同的,如果指令需要someParam是一个数字值,那么就不要用第二种方式。切记不要改变这些。
嵌套内容
自定义指令可以嵌套内容,和预定义指令相似:<#if ...>nested content</#if>。比如,下面这个例子中是创建了一个可以为嵌套的内容画出边框:
<#macro border> <table border=4 cellspacing=0 cellpadding=4><tr><td> <#nested> </td></tr></table> </#macro>
<#nested>指令执行位于开始和结束标记指令之间的模板代码段。
nested指令也可以多次被调用
例如:
<#macro do_thrice> <#nested> <#nested> <#nested> </#macro> <@do_thrice> Anything. </@do_thrice>
嵌套的内容可以是任意有效的FTL,包含其他的用户自定义指令
例如:
<@border> <ul> <@do_thrice> <li><@greet person="Joe"/> </@do_thrice> </ul> </@border>
在嵌套的内容中,宏的局部变量是不可见的
<#macro repeat count> <#local y = "test"> <#list 1..count as x> ${y} ${count}/${x}: <#nested> </#list> </#macro> <@repeat count=3>${y!"?"} ${x!"?"} ${count!"?"}</@repeat>
将会打印:
test 3/1: ? ? ? test 3/2: ? ? ? test 3/3: ? ? ?
因为y,x和count是宏的局部(私有)变量,从宏外部定义是不可见的
相关推荐
### easybuilder 8000 指令说明之 Macro 使用详解 在现代工业自动化领域,编程语言与软件工具的熟练运用是实现高效生产管理的关键。EasyBuilder 8000,作为一款专为MT8000系列人机界面(HMI)设计的编程软件,提供...
3. **指令格式(Block Format)**:讲解OpenCNC MACRO中的指令块格式,包括基本结构和编写规则。 4. **运算子(Operator)**:列出并解释了OpenCNC MACRO中可用的各种运算符。 5. **语法规则**: - **变数指定**:介绍...
标题 "cortexm3_macro" 指向的是与Cortex-M3处理器相关的宏定义,这通常涉及到微控制器编程,特别是使用ARM公司的Cortex...在实际项目中,开发者通常会结合标准库(如CMSIS-CORE)和这些自定义宏来实现特定的系统功能。
在宏汇编中,程序员可以创建自定义的指令集,这些指令集在编译时会被替换为实际的汇编指令。 **汇编语言** 是一种低级别的编程语言,每条语句都对应着机器能够直接执行的特定指令。MASM支持x86和x64架构,这两种...
手册强调了MACRO宏程序的扩展,比如如何使用新增的MACROXML资料应用、设置MACRO警报和提示、自定义警报触发语法以及自定义提示方式等。这些内容都是在详细描述如何增强数控系统的功能性和用户的交互体验。 6. 操作...
局部变量一般用于宏指令主函数或自定义的子函数中,其合法性仅限于定义它的函数中。全局变量则定义在所有宏指令函数之前,对整个宏指令都有效。 编写宏指令时要注意变量的命名规则,变量名称必须以英文字母开头,...
QuickMacro还支持自定义脚本编写。用户可以使用内置的简单语言,或者选择与Visual Basic for Applications (VBA)兼容的编程环境,创建更复杂、更灵活的宏指令。这使得用户能够实现更高级的自动化任务,比如根据特定...
无论您是需要插入自定义代码的程序员,还是开发人员测试应用程序功能并做出响应的开发人员,都可以轻松地为您提供帮助。 无需使用任何程序设计知识即可使用 Pulover Macro Creator,因为该应用程序设计为易于使用。...
Blade Macro是Blade模板引擎的一个特色功能,允许我们自定义可重用的模板代码块,以提高代码的复用性和可维护性。现在,让我们深入探讨一下Blade Macro的原理、用法以及它如何帮助优化 Laravel 开发流程。 首先,...
安川机器人的宏指令功能是一种强大的工具,它允许用户根据自身需求自定义机器人语言,以满足特定系统的操作需求。宏程序命令功能使得用户可以将一系列操作集中在一个命令中,提高编程效率和灵活性。 在宏程序中,一...
自定义指令是 Freemarker 强大的特性之一,通过实现 `freemarker.template.DirectiveBody`、`freemarker.template.DirectiveCallSite` 等接口,开发者可以扩展 Freemarker 语言,创建自己的模板指令,满足特定需求...
Blade宏允许开发者自定义一系列可重用的 Blade 指令,从而提高代码的可维护性和效率。这些宏可以包含任意的PHP代码,并且可以在任何Blade模板中像使用内置指令一样调用它们。 **定义Blade宏** 在Laravel应用的`app/...
综上所述,OpenCNC_macro手册为我们提供了一个强大的工具,通过这些指令、语法和参数,我们可以编写出功能强大、灵活性高的宏程序。这对于提高生产效率、降低生产成本具有重要意义。然而,这些高级功能的使用需要...
AutoHotkey,又名AHK,是一款开源的Windows自动化脚本语言,它提供了丰富的功能来编写自定义热键、快捷方式和脚本。"AutoHotkey_1.1.32.00_setup.exe"是AutoHotkey的安装程序,用户可以通过它来安装这个强大的工具。...
具体的编程方法是根据手动指令的时机(Macro Execution Condition)进行编程。 4. 宏指令字符数和行数限制:一个项目或屏幕中可以创建的宏指令数量没有限制。但是,每个宏指令最多可使用3000个字符,换行符会被计为...
具体到操作层面,巨集指令可以执行包括数值运算、逻辑判断、流程控制、数据传递、数据转换、计时器计数器、自定义通讯指令等多种操作。 巨集指令的分类是为了方便操作者根据不同的功能需求来使用和设置。这种分类...
MACRO和MEND是宏定义和结束宏的伪指令,它们允许程序员创建自定义的重复使用的代码块,类似于函数。宏定义包括一系列指令和操作,可以接受参数并进行替换。例如,给出的宏`HANDLER`定义了一个标准的中断处理程序...
"ASCII Generic Protocol Macro.rar"这个压缩包文件很可能包含了一些关于如何使用欧姆龙PLC进行通信的示例程序或宏指令。ASCII(美国标准代码交换信息)是一种基于拉丁字母的字符编码,常用于设备间的简单通信协议。...