-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathref_depr_oldmacro.html
166 lines (114 loc) · 12.9 KB
/
ref_depr_oldmacro.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!doctype html>
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>老式的 macro 和 call 指令 - FreeMarker 手册</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="FreeMarker 手册">
<meta property="og:title" content="老式的 macro 和 call 指令">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://freemarker.org/docs/ref_depr_oldmacro.html">
<link rel="canoical" href="http://freemarker.org/docs/ref_depr_oldmacro.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css">
</head>
<body itemscope itemtype="https://schema.org/Code">
<meta itemprop="url" content="http://freemarker.org/docs/">
<meta itemprop="name" content="FreeMarker 手册">
<!--[if lte IE 9]>
<div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
<![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner"> <img itemprop="image" src="logo.png" alt="FreeMarker">
</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="http://freemarker.org/docs/api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://sourceforge.net/p/freemarker/bugs/new/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="toc.html" class="navigation-header">Manual</a><div class="navigation-header"></div></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="toc.html"><span itemprop="name">FreeMarker 手册</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">模板语言参考 </span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">废弃的 FTL 结构</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_oldmacro.html"><span itemprop="name">老式的 macro 和 call 指令</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
<div class="content-wrapper">
<div id="table-of-contents-wrapper" class="col-left">
<script>var breadcrumb = ["FreeMarker 手册","模板语言参考 ","废弃的 FTL 结构","老式的 macro 和 call 指令"];</script>
<script src="toc.js"></script>
<script src="docgen-resources/main.min.js"></script>
</div>
<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_builtin.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_transform.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="ref_depr_oldmacro" itemprop="headline">老式的 macro 和 call 指令</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#autoid_126" data-menu-target="autoid_126">概要</a></li><li><a class="page-menu-link" href="#autoid_127" data-menu-target="autoid_127">描述</a></li></ul> </div><a name="ref.directive.oldmacro"></a><a name="ref.directive.call"></a>
<h2 class="content-header header-section2" id="autoid_126">概要</h2>
<pre class="metaTemplate"><code class="inline-code"><#macro <em class="code-color">name</em>(<em class="code-color">argName1</em>, <em class="code-color">argName2</em>, <em class="code-color">... argNameN</em>)>
...
</#macro></code>
<code class="inline-code"><#call <em class="code-color">name</em>(<em class="code-color">argValue1</em>, <em class="code-color">argValue2</em>, <em class="code-color">... argValueN</em>)></code></pre>
<p>这里:</p>
<ul>
<li>
<code class="inline-code"><em class="code-color">name</em></code>:宏的名称(不是表达式)
</li>
<li>
<code class="inline-code"><em class="code-color">argName1</em></code>,
<code class="inline-code"><em class="code-color">argName2</em></code>等:
存储参数值的 <a href="dgui_misc_var.html">局部变量</a> 的名称(不是表达式)
</li>
<li>
<code class="inline-code"><em class="code-color">argValue1</em></code>,
<code class="inline-code"><em class="code-color">argValue2</em></code>,
等:表达式,参数的值
</li>
</ul>
<h2 class="content-header header-section2" id="autoid_127">描述</h2>
<div class="callout note">
<strong class="callout-label">Note:</strong>
<p>这是 FreeMarker 2.1 版本的文档中宏还有宏它相关的指令。
这仍然可以用,但是已经被废弃了。你也许想阅读 FreeMarker2.2+ 版本的参考:
<a href="ref_directive_macro.html#ref.directive.macro">macro, return</a>,<a href="ref_directive_userDefined.html#ref.directive.userDefined">自定义指令调用</a></p>
</div>
<p>宏是关联名称的模板段。你可以在你的模板中的很多位置使用命名的代码段,
所以它可以在重复的任务中帮助你。宏可以有参数,这会在你调用它的时候影响生成的输出。</p>
<p>你可以使用 <code class="inline-code">macro</code> 指令来定义宏,之后你可以在整个模板中定义宏。
<code class="inline-code">macro</code> 指令本身不往输出中写任何东西,它只是用来定义宏。
例如这会定义一个名为 <code class="inline-code">warning</code> 的宏:</p>
<div class="code-wrapper"><pre class="code-block code-template"><strong><#macro warning(message)></strong>
<div align=center>
<table border=1 bgcolor=yellow width="80%"><tr><td align=center>
<b>Warning!</b>
<p>${message}
</td></tr></table>
</div>
<strong></#macro></strong></pre></div>
<p>当你使用 <code class="inline-code">call</code> 指令和宏名称时,
宏定义体(在宏开始标签和结束标签之间)会被处理。例如,
这会调用名为 <code class="inline-code">warning</code> 的宏:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#call warning("Unplug the machine before opening the cover!")></pre></div>
<p>将会输出:</p>
<div class="code-wrapper"><pre class="code-block code-output"> <div align=center>
<table border=1 bgcolor=yellow width="80%"><tr><td align=center>
<b>Warning!</b>
<p>Unplug the machine before opening the cover!
</td></tr></table>
</div>
</pre></div>
<p>给 <code class="inline-code">call</code> 指令传递的参数可以在宏定义体中作为 <a href="dgui_misc_var.html">局部变量</a>访问。</p>
<p>当调用宏时,必须指定和宏定义时指定的个数相同的参数。
例如,如果这是宏的定义:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#macro test(a, b, c)>Nothing...</#macro></pre></div>
<p>那么这些是合法的宏调用:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#call test(1, 2, 3)>
<#call test("one", 2 + x, [1234, 2341, 3412, 4123])></pre></div>
<p>如果宏没有参数,那么可以忽略圆括号:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#macro test>mooo</#macro>
<#call test></pre></div>
<p>当你定义宏时,那么它在模板中就是可用的,你也只能在模板中来定义宏。
但是你可能想在更多模板中使用相同的宏。这种情况下你可以在公共文件中存储你定义的宏,
之后在所有你需要这些宏的模板中包含那个文件。</p>
<p>调用定义在模板下部的宏是不错的<span class="marked-for-programmers">
(因为宏在解析时间定义,而不是执行时间)</span>。然而,
如果宏定义被插入到 <code class="inline-code">include</code> 指令中,
它们知道 FreeMarker 执行 <code class="inline-code">include</code> 指令时才会可用。</p>
<p>你可以用 <code class="inline-code">return</code> 指令在
<code class="inline-code"></#macro></code> 标签之前留下宏定义体。</p>
<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_builtin.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_transform.html"><span>Next</span></a></div></div></div></div> </div>
</div>
<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/index.html">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/nanlei/freemarker/tree/manual-zh-2.3-gae/src/manual">Chinese Manual on Github</a></li><li><a href="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://sourceforge.net/p/freemarker/bugs/new/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"><p><span class="generated-for-product">Generated for: Freemarker 2.3.23</span><span class="last-updated"> Last generated:
<time itemprop="dateModified" datetime="2015-09-18T14:38:51Z" title="Friday, September 18, 2015 2:38:51 PM GMT">2015-09-18 14:38:51 GMT</time></span></p> <p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2015
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://freemarker.org">The FreeMarker Project</a>. All rights reserved. </p>
</div></div></div></body>
</html>