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。

转载于:https://www.cnblogs.com/yejq/p/3967105.html

FreeMarker笔记 第二章 数值和类型相关推荐

  1. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  2. JavaSE入门0基础笔记 第二章Java基础语法

    JavaSE入门0基础笔记 第二章Java基础语法 1.运算符 1.1算术运算符 1.1.1运算符和表达式 1.1.2 算术运算符 1.1.3字符的"+"操作 1.1.4 字符串中 ...

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

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

  4. Computational Optimal Transport 笔记——第二章(2)

    Computational Optimal Transport 笔记--第二章(2) 符号说明 2. 理论基础 2.3 Kantorovich Relaxation SUM 2.4 Optimal T ...

  5. 操作系统笔记 第二章

    操作系统笔记 第二章 1.有两个程序:A程序按顺序使用CPU10秒.设备甲5秒.CPU5秒.设备乙10秒.CPU10秒:B程序按顺序使用设备甲10秒.CPU 10秒.CPU5秒.设备乙5秒.CPU 5 ...

  6. 【王道考研】操作系统 笔记 第二章上 进程调度

    本文内容,1.进程和线程 2.进程调度 特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道 ...

  7. 机器人导论(第四版)学习笔记——第二章

    机器人学导论(第四版)学习笔记--第二章 2. 空间描述和变换 2.1 引言 2.2 描述:位置.姿态与位姿 2.3 映射:从一个坐标系到另一个坐标系的变换 2.4 算子:平行,旋转和变换 2.5 总 ...

  8. java网络编程 个人笔记 第二章 流

    java网络编程 个人笔记 第二章 流 流 I/O介绍 java流式输入/输出原理 输入输出流分类 节点流和处理流 节点流的类型 处理流的类型 InputStream(输入流) InputStream ...

  9. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

  10. 《计算传播学导论》读书笔记——第二章文本分析简介

    <计算传播学导论>读书笔记--第二章文本分析简介 第一节 文本分析研究现状 常用文本挖掘技术 第二节 文本分析与传播学研究 (一)为什么文本挖掘技术逐渐受到传播学者的关注 (二)不同文本分 ...

最新文章

  1. 文本去重之MinHash算法——就是多个hash函数对items计算特征值,然后取最小的计算相似度...
  2. 安装kilo版本openstack-dashboard时出现的python compress command not found错误解决办法
  3. 大数据实训报告_2019公路货运大数据报告发布:运输结构持续优化 大数据优势愈发明显...
  4. ue编辑器拖拽上传图片_editor.md实现拖拽剪切复制粘贴上传图片,文件插件
  5. vue2.0框架认识
  6. 切换控制器的三种手段push modal 切换window的rootViewController
  7. oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置
  8. Pytorch《LSTM模型》
  9. Oracle创建视图的一个问题
  10. [bzoj1791][ioi2008]Island 岛屿(基环树、树的直径)
  11. [leetCode]Merge k Sorted Lists
  12. [转载] 全本张广泰——第一回 开篇聊闲天 青楼是非多
  13. 小程序之模版消息通知
  14. 互联网发展简史(1)ARPANET的建立
  15. Ural_1671. Anansi's Cobweb(并查集)
  16. 腾讯云CVM云服务器1M宽带能干嘛?1M宽带支撑多少人在线?
  17. 开源pdf读取_Wallabag可满足您的开源读取后应用程序需求
  18. 【目录】王爽《汇编语言》
  19. 长尾分布之DECOUPLING REPRESENTATION AND CLASSIFIER FOR LONG-TAILED RECOGNITION
  20. 初识Java之类和对象

热门文章

  1. php--------使用js生成二维码
  2. jQuery 1.6 源码学习(七)——core.js[7]之实用工具方法(Utilities)
  3. 一个三层结构的留言板,结合了ajax效果
  4. 第4章 神经网络和误差反向传播法
  5. C中使用memset
  6. python第五十二课--自定义异常类
  7. CAS 配置NLB 负载均衡网络无法连接
  8. bzoj1088 [SCOI2005]扫雷Mine
  9. 学习Jammendo代码的心路历程(二)ViewFlipper数据的填充
  10. 《授予博士、硕士学位和培养研究生的学科、专业目录》 (1997 颁布 )