zoukankan      html  css  js  c++  java
  • FreeMarker(三)数值和类型基本内容

    简介:

      1.什么是数值?

        这部分对于程序员来说可以直接跳过这,它和程序语言中的数值类型是相似的。

        你所知道的来自于每天所使用的数字,比如16,0.5等这些用语就是数值的示例,也就是数字。在计算机语言中,这些用语有着更广泛的含义,比如数值并不一定是数字值,看下面这个数据模型:

    (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的数值是“Big Joe”(字符串),today的数值是Jul6,2007(日期),todayHoilday的数值是false(布尔值,是/否,这样的值)。lotteryMumbers的数值是包含20,14,42,8,15的序列。在这种意义上,lotteryNumbers是多值的,它包含多个数值(如其中的第二项是14),但是lotteryNumbers本身还是单值。它像一个装有很多东西的盒子,整个盒子被看做是独立的。最后有一个数值cargo,它是一个哈希表(也可以看做是盒子)。所以数值就是存储在变量中的(在user,cargo或cargo.name中)东西。但是不需要存储的数值也可以称之为数值,比如这里的数字100:

    <#if cargo.weight < 100>Light cargo</#if>
    

         当模板被执行时,计算的临时结果也称为数值,比如20+120(它会打印120)

    ${cargo.weight / 2 + 100}
    

         这最后一种的解释:两个数40(货物的重量)和2相除的结果是20,这是一个新计算出的数值。把它和100相加,那么120就出来了,接着就打印出来了(${...}),接着模板继续向下执行直到所有结果都计算出来。

        现在你应该能体会到数值这个词的含义了,不仅仅是数字的值。

      2.什么是类型?

        数值中非常重要的一个概念就是类型。比方说,变量user的类型是字符串,lotteryNumbers的类型是序列。数值的类型非常重要,因为它决定了这些数值可以在哪里使用的最大限度。比如${user/2}就是错误的,但是${cargo.weight/2}就能计算出结果20,除法仅对数字值有效,而不能作用于字符串。仅当cargo是一个哈希表时cargo.name可以使用。也可以用<#list...>仅仅来遍历序列。<#if...>指令的条件condition只能是布尔值等。

      注意:

      这里说一点点术语:称“布尔”或“布尔值”或“布尔类型”都是相同的含义。

      数值同时也可以含有多种类型,尽管这样很少使用。看下面这个数据模型mouse,就又是字符串又是哈希表。

    (root)
    |
    +- mouse = "Yerri"
    |
    +- age = 12
    |
    +- color = "brown"
    

         如果用上面的数据模型合并到模板中,就该这么来写:

    ${mouse} <#-- 用 mouse 作为字符串 -->
    ${mouse.age} <#-- 用 mouse 作为哈希表 -->
    ${mouse.color} <#-- 用 mouse 作为哈希表 -->
    

         它输出内容为:

    Yerri
    12
    brown
    
  • 相关阅读:
    android gallery 自定义边框+幻灯片
    C/C++学习笔记---高地址、低地址、大段字节序、小段字节序
    C#学习笔记--详解委托,事件与回调函数
    Clr Via C#读书笔记---计算限制的异步操作
    Clr Via C#读书笔记---CLR寄宿和应用程序域
    Clr Via C#读书笔记---程序集的加载和反射
    Clr Via C#读书笔记---垃圾回收机制
    Clr Via C#读书笔记---线程基础
    CLR via C#(18)——Enum
    CLR via C#(17)--接口
  • 原文地址:https://www.cnblogs.com/xiaonanman/p/7977095.html
Copyright © 2011-2022 走看看