【问题标题】:Quick PlayFramework / Groovy快速播放框架/Groovy
【发布时间】:2011-06-01 04:58:52
【问题描述】:

为什么即使sel 的值与“audio”不同,以下代码也总是发出“yes”(在 HTML 中)? (我已经记录了sel 的值并确认了不同的值。)

这是我在 Play 上的第一天。所以,我可能在做一些非常愚蠢的事情。

${sel='audio'?'yes':'no'}

【问题讨论】:

    标签: templates groovy playframework


    【解决方案1】:

    我不太了解 Groovy 模板,但我认为应该是这样的:

    ${sel=='audio'?'yes':'no'}
    

    您的代码:

    ${sel='audio'?'yes':'no'}
    

    表示;如果 'audio'(不为 null 的字符串将始终为“true”)则 sel = 'yes' 否则为 'no',所以它永远不会是 'no'。

    【讨论】:

    • 不符合 Groovy 参考 groovy.codehaus.org/…
    • 是对的,你需要 == 三元来评估表达式的两边;否则将始终返回三元的左侧。
    • @roshan 我认为您误读了链接页面上的 groovy 示例。它正在检查一个布尔值,并将“男性”或“女性”存储在一个新变量中。在您的示例中,您想将变量与字符串进行比较,结果将被输出。因此,您需要== 进行比较。
    • 我认为乔纳斯是对的。据我了解,Elvis 运算符对表达式求值,如果为 false 或 null,则返回一些内容,否则返回一些不同的内容。在这种情况下,被评估的表达式是一个赋值,它反过来评估被分配的值(在这种情况下,'audio',它既不是假也不是空的)。您应该使用 == ('equals') 运算符。
    • 谢谢各位!是的,它是==。最初,凭直觉,我有 == 但它不起作用(可能是我有其他错误),然后我犯了检查 Groovy Ref 的“错误”并误解了他们的例子:-)
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2013-02-20
      • 2016-12-23
      相关资源
      最近更新 更多