-
Notifications
You must be signed in to change notification settings - Fork 0
/
ref_directive_assign.html
188 lines (134 loc) · 13.6 KB
/
ref_directive_assign.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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<!doctype html>
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>assign - 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="assign">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://freemarker.org/docs/ref_directive_assign.html">
<link rel="canoical" href="http://freemarker.org/docs/ref_directive_assign.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_directives.html"><span itemprop="name">指令参考</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_assign.html"><span itemprop="name">assign</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 手册","模板语言参考 ","指令参考","assign"];</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_directive_alphaidx.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_attempt.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="ref_directive_assign" itemprop="headline">assign</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#autoid_69" data-menu-target="autoid_69">概要</a></li><li><a class="page-menu-link" href="#autoid_70" data-menu-target="autoid_70">描述</a></li></ul> </div><a name="ref.directive.assign"></a>
<h2 class="content-header header-section2" id="autoid_69">概要</h2>
<pre class="metaTemplate"><code class="inline-code"><#assign <em class="code-color">name1</em>=<em class="code-color">value1</em> <em class="code-color">name2</em>=<em class="code-color">value2</em> <em class="code-color">... nameN</em>=<em class="code-color">valueN</em>></code>
或
<code class="inline-code"><#assign <em class="code-color">same as above...</em> in <em class="code-color">namespacehash</em>></code>
或
<code class="inline-code"><#assign <em class="code-color">name</em>>
<em class="code-color">capture this</em>
</#assign></code>
或
<code class="inline-code"><#assign <em class="code-color">name</em> in <em class="code-color">namespacehash</em>>
<em class="code-color">capture this</em>
</#assign></code></pre>
<p>这里:</p>
<ul>
<li>
<code class="inline-code"><em class="code-color">name</em></code>:变量的名字。
它不是表达式。而它可以写作是字符串,如果变量名包含保留字符这是很有用的,
比如 <code class="inline-code"><#assign "foo-bar" = 1></code>。
请注意这个字符串没有展开插值(如<code class="inline-code">"${foo}"</code>);
如果需要赋值一个动态创建的名字,那么不得不使用 <a href="app_faq.html#faq_assign_to_dynamic_variable_name">这个技巧</a>。
</li>
<li>
<code class="inline-code">=</code>:赋值操作符。
它也可以是一个简写的赋值操作符(从 FreeMarker 2.3.23 版本开始):
<code class="inline-code">++</code>,<code class="inline-code">--</code>,
<code class="inline-code">+=</code>,<code class="inline-code">-=</code>,
<code class="inline-code">*=</code>,<code class="inline-code">/=</code> 或
<code class="inline-code">%=</code>。比如 <code class="inline-code"><#assign
x++></code> 和 <code class="inline-code"><#assign x = x +
1></code> 是一样的,并且 <code class="inline-code"><#assign x += 2></code>
和 <code class="inline-code"><#assign x = x + 2></code> 是相同的。
请注意, <code class="inline-code">++</code> 通常意味着算术加法
(对于非数字将会失败),不像
<code class="inline-code">+</code> 或 <code class="inline-code">+=</code>
可以进行字符连接等重载操作。
</li>
<li>
<code class="inline-code"><em class="code-color">value</em></code>:
存储的值。是表达式。
</li>
<li>
<code class="inline-code"><em class="code-color">namespacehash</em></code>:(通过 <a href="ref_directive_import.html#ref.directive.import"><code>import</code></a>)
为命名空间创建的哈希表。是表达式。
</li>
</ul>
<h2 class="content-header header-section2" id="autoid_70">描述</h2>
<p>使用该指令你可以创建一个新的变量,
或者替换一个已经存在的变量。注意仅仅顶级变量可以被创建/替换
(也就是说你不能创建/替换 <code class="inline-code">some_hash.subvar</code>,
除了 <code class="inline-code">some_hash</code>)。</p>
<p>关于变量的更多内容,请阅读:<a href="dgui_misc_var.html">模板开发指南/其它/在模板中定义变量</a></p>
<p>比如:变量 <code class="inline-code">seq</code> 存储一个序列:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign seq = ["foo", "bar", "baz"]></pre></div>
<p>比如:变量 <code class="inline-code">x</code> 中存储增长的数字:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign x++></pre></div>
<p>作为一个方便的特性,你可以使用一个 <code class="inline-code">assign</code>
标记来进行多次定义。比如这个会做上面两个例子中相同的事情:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign
seq = ["foo", "bar", "baz"]
x++
></pre></div>
<p>如果你知道什么是命名空间:<code class="inline-code">assign</code>
指令在命名空间中创建变量。通常它在当前的命名空间
(也就是和标签所在模板关联的命名空间)中创建变量。但如果你是用了
<code class="inline-code">in <em class="code-color">namespacehash</em></code>,
那么你可以用另外一个 <a href="dgui_misc_namespace.html">命名空间</a> 来创建/替换变量。
比如,这里你在命名空间中 <code class="inline-code">/mylib.ftl</code>
创建/替换了变量 <code class="inline-code">bgColor</code>:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#import "/mylib.ftl" as my>
<#assign bgColor="red" in my></pre></div>
<p> <code class="inline-code">assign</code>
的极端使用是当它捕捉它的开始标记和结束标记中间生成的输出时。
也就是说,在标记之间打印的东西将不会在页面上显示,
但是会存储在变量中。比如:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#macro myMacro>foo</#macro>
<#assign x>
<#list 1..3 as n>
${n} <@myMacro />
</#list>
</#assign>
Number of words: ${x?word_list?size}
${x}</pre></div>
<p>将会输出:</p>
<div class="code-wrapper"><pre class="code-block code-output">Number of words: 6
1 foo
2 foo
3 foo
</pre></div>
<p>请注意,你不应该使用它来往字符串中插入变量:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign x>Hello ${user}!</#assign> <#-- BAD PRACTICE! --></pre></div>
<p>你可以这么来写:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign x="Hello ${user}!"></pre></div>
<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_alphaidx.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_attempt.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>