zoukankan      html  css  js  c++  java
  • Velocity(10)——指令的转义

    引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:

    #if($foo)
    Go
    !
    #end

    $foo为true,输出Go
    !;否则不输出任何内容。

    使用转义:

    \#if( $foo )
    Go
    !
    \#end


    此时,
    "\""#"结合,从而破坏了原本的#if(),而$foo作为判断条件,也不会被解析。
    所以上面这段代码,无论$foo是true还是false,结果都是
    #
    if( $foo )
    Go
    !
    #end
    这类似于使用了#literal() ... #end指令。

     如果使用两个"\":

    \\#if( $foo )
    Go
    !
    \\#end


    首先,#if前面的两个
    假定$foo是true,那么会输出"Go!",并且是紧跟在刚才的"\"后面(因为没有
    换号符)。#if($foo)和#end之间的内容,都会输出,包括#end前面的两个"\"
    它们会被解析为一个"\"。如果$foo是false,仅仅输出一个"\",而"Go!"以
    及后面下一行的"\"不会输出。
    "\"结合,变为一个"\"输出。然后#if($foo)正常处理。

    还有一种情况需要说明:

    \\\#if($foo)
    Go
    !
    \\#end


    前两个"\"被解析为"\",第三个"\"和后面的"#"解析为"#",#if()被破坏。所以输出就是
     
    \#if($foo)
    Go
    !
    \......
    注意最后那里,有一个合法的#end,但是它是多余的,所以这一段代码是会报错的。
  • 相关阅读:
    数组中出现次数超过一半的数字
    Trie字典树算法
    字符串匹配算法 之 基于DFA(确定性有限自动机)
    实现栈最小元素的min函数
    有关有环链表的问题
    浅谈C中的malloc和free
    undefined reference to 'pthread_create'问题解决
    用两个栈实现队列
    resf规范
    单例模式
  • 原文地址:https://www.cnblogs.com/yuepeng/p/1885861.html
Copyright © 2011-2022 走看看