1、数值
数值不一定是数字类型的值,也有可能是字符串、日期、布尔值、哈希表等;
(root) | +- user = "Big Joe" | +- today = Jul 6, 2007 | +- todayHoliday = false | +- lotteryNumbers | | | +- (1st) = 20 | | | +- (2st) = 14 | | | +- (3rd) = 42 | | | +- (4th) = 8 | | | +- (5th) = 15 | +- cargo | +- name = "coal" | +- weight = 40
比如:变量user的值是字符串,today的值是日期,holiday的值是布尔值,lotteryNumbers的值是一个序列,是多值类型,假如把它看做容器的话,就是一个单值类型,cargo是一个hash表。
2、类型
数值的类型决定了数值可使用的最大限度
它有4种:
2.1、标量
标量是最基本的数值类型,有:
- 字符串:表示简单的文本
- 数值
- 布尔值:逻辑上的对与错
- 日期:日期变量可以存储和日期、时间相关的数据
- 日期:精确到天,没有时间。eg June 1,2017
- 时间:精确到毫秒。eg 10:10:10 AM
- 日期-时间:包含上面两者 eg June 1,2017 10:10:10 AM
2.2、容器
容器里包含的变量称为子变量,有以下几种类型:
- 哈希表:每个子变量都可以通过唯一一个名称来查找,子变量是没有顺序的;
- 序列:每个子变量通过索引来标识,子变量是有顺序的;
- 集合:是有限制的序列,不能获取集合的大小,也不能通过索引来获取集合中的子变量,但是可以用list指令来遍历;
数据模型本身就是哈希表
2.3、子程序
2.3.1、方法和函数
当一个值是方法或函数的时候,可以根据传递的参数来计算其他值,比如
1和3的平均数是:${avg(1, 3)}
输出:
1和3的平均数是:2
2.3.2、用户自定义指令
用户自定义指令是freemarker的标签,是一种子程序,一种可以服用的模板代码段;
eg
<@greet>