2.1 基本内容

2.1.1 简介
2.1.2 什么是数值

和程序语言中的数值类型是相似的。

2.1.3 什么是类型?
2.1.4 数据模型是哈希表

2.2 类型

2.2.1 简介
2.2.2 标量

标量是最基本、最简单的数值类型,可以是:字符串、数字、布尔值、日期;

2.2.3 容器

容器的类型有:哈希表(HashMap)、序列(ArrayList)、集(集是有限制的序列,不能获取集的大小,也不能通过索引取出集中的子变量,但是它们仍然可以通过list指令来遍历);

2.2.4 子程序
2.2.4.1 方法和函数

假设程序员在数据模型中放置了一个方法变量avg,那么它就可以被用来计算数字的平均值。给定3和5作为参数,访问avg时就能得到结果4;

The average of 3 and 5 is: ${avg(3,5)}

输出:

The average of 3 and 5 is: 4

那么方法和函数有什么区别呢:它们没有关系,但也不是一点关系都没有。方法是来自于数据模型(它们反射了Java对象的方法),而函数是定义在模板内的(使用了函数指令-这也是高级主题),但二者可以用同一种方式来使用。

2.2.4.2 用户自定义指令

用户自定义指令(换句话说,就是FreeMarker的标签)。

假设现在有一个变量box,它的值是用户自定义的指令,用来打印一些特定的HTML信息,这个指令定义了一个标题和其中的信息。

<@box title="Attention!">
Too much copy-pasting may leads to
maintenance headaches.
</@box>
2.2.4.3 函数/方法和用户自定义指令的比较

二者之间的选择是两难的。按经验来说,如果能够实现,请先用自定义指令而不要用函数/方法。指令的特征如下:

  • 输出(返回值)的是标记(HTML,XML等)。主要原因是函数的返回结果是可以自动进行XML转义(这是因为${…}的特性),而用户自定义指令的输出则不是(这是因为<@…>的特性所致,它的输出假定为是标记,因此就不再转义).
  • 副作用也是很重要的一点,它没有返回值。例如一个指令的目的是往服务器日志中添加一个条目。(事实上你不能得到自定义指令的返回值,但有些反馈的类型是有可能设置非本地变量的)。
  • 会进行流程的控制(就像list或if指令那样),但是不能在函数/方法上这么做;
2.2.5 其它
2.2.5.1 节点

节点变量代表了树状结构中的一个节点,而且通常是配合XML格式来处理的。

节点的主要作用是拓扑信息,也可以存储一些元信息(metadata)。

 

项目

  1. P1:F:\360\Learn\FreeMarker\workspace\FreeMarker-hello-java\https://github.com/yejq/FreeMarker-hello-java.git
  2. P2:F:\360\Learn\freemarker\workspace\FreeMarker-hello-web\https://github.com/yejq/FreeMarker-hello-web.git

FreeMarker笔记 第二章 数值和类型的更多相关文章

  1. 二、FreeMarker 模版开发指南 第二章 数值和类型

    章节内容如下:   基本内容 类型 一.基本内容 简介 什么是数值? 什么是类型? 数据模型是哈希表 a.简介 理解数值和类型的概念是理解数据模型的关键所在.然而,数值和类型的概念并不局限于数据模型, ...

  2. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  3. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  4. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...

  5. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  6. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  7. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  8. 《C++ Primer》读书笔记—第二章 变量和基本类型

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...

  9. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

随机推荐

  1. SQL SERVER ->> Wait Stats

    等待状态是隔离SQL SERVER性能问题的一个重要手段,从实例级别入手.可以大概看出SQL SERVER在过去某段时间内是否处于某种资源的吃紧状态.不过取决于你是否有建立有效的性能数据收集机制.sy ...

  2. PHP 对象和数组互相转换

    最简单的:$array = (array)$object; 但是, 如果对象的属性也是个对象的话, 就转换不了了, 就是说PHP的强制类型转换不能把对象属性中的对象转换成数组的下一个维度的数组, 刚刚 ...

  3. C# winform窗体假死

    C#  winform窗体假死 我们经常会遇到当执行一个比较大的函数时,窗体会出现假死的现象,给用户的体验不是很好,于是我们遇到了问题,那么就必须解决,我们该如何解决呢,首先在自己的脑里画个问号,接下 ...

  4. delphi常用函数

    直接引用了 http://www.cnblogs.com/doit8791/archive/2012/05/17/2507073.html.

  5. Mac 版 QQ 可直接访问 iPhone 的相册 ?!

    在QQ的聊天窗口中,点击 发送图片 的按钮,会有两个选择项,其中一个就是 从iPhone相册中选取 ,如图 点击  从iPhone相册中选取 后,iPhone上的QQ会收到一条消息 “请选择要上传的照 ...

  6. [原]poj2243-Knight Moves-水bfs

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> using ...

  7. UVa 10154 - Weights and Measures

    UVa 10154 - Weights and Measures I know, up on top you are seeing great sights,  But down at the bot ...

  8. < %=...%>< %#... %>< % %>< %@ %>具体意义

    < %=...%>< %#... %>< % %>< %@ %>< %#... %>: 是在绑定控件DataBind()方法执行时被执行,用 ...

  9. 计算机术语install和setup的区别

    作为安装程序的Setup文件是软件的开发者专门为其软件设计的.exe文件,是当前最为盛行的安装程序.在运行该Setup文件进行软件安装时,Setup除了进行复制.改名.解压和目录维护等基本安装工作外, ...

  10. ulimit调优

    1. linux的ulimit各种限制之深入分析 http://blog.sina.com.cn/s/blog_59b6af6901011ekd.html 2. Linux下修改ulimit设置的最大 ...