3

扩展引用中的有效蜜蜂蜇伤表达是什么?

rule set_persistents {
  select when pageview ".*"
  noop();
  always {
    ent:ecount += 1 from 1;
    app:acount += 1 from 1;
  }
}

rule test_bee_stings {
  select when pageview ".*"
  pre { 
    sum = ent:ecount + app:acount;
    content = <<
      sum is #{sum}<br/>
      sum + 1 is #{sum+1}<br/>
      ecount is #{ent:ecount}<br/>
      acount is #{app:acount}
    >>;
  }
  notify("Results", content) with sticky = true;
}

当我运行它时,我什么也得不到(永远看不到通知框)。如果我删除 ecount 和 acount 行,我会得到

sum is 2
sum + 1 is 21

哪些蜜蜂蜇人表达在扩展引用中是有效的?普通的带引号的字符串有什么不同吗?

4

1 回答 1

2

在扩展引号中的 beesting 中使用的变量应该已经分配了值,而不是表达式。这是因为扩展引号中的 beesting 是在客户端而不是服务器端评估的。由于前面解释的原因,我还建议不要在 beesting 中使用“sum+1”,即使它目前适用于理解 JavaScript 的端点。

以下是我将如何写你想要做的事情:

ruleset a60x546 {
  meta {
    name "extended-quotes-beesting"
    description <<
      extended-quotes-beesting
    >>
    author "Mike Grace"
    logging on
  }

  rule test_bee_stings {
    select when pageview ".*"
    pre { 
      ecount = ent:ecount + 1;
      acount = app:acount + 1;
      sum = ecount + acount;
      sumplus = sum + 1;
      content = <<
        sum is #{sum}<br/>
        sum + 1 is #{sumplus}<br/>
        ecount is #{ecount}<br/>
        acount is #{acount}
      >>;
    }
    {
      notify("Results", content) with sticky = true;
    }
    always {
      ent:ecount += 1 from 1;
      app:acount += 1 from 1;
    }
  }
}

使用小书签在 example.com 上运行多次应用的动作镜头: 替代文字

*我还建议不要使用之前的规则 postlude 来修改应用程序和实体变量,然后在下一条规则中使用这些变量,期望它会增加。虽然您所做的工作在语义上很混乱,但可能会像我展示的那样更清晰。

**应该持保留态度,因为这只是一个疯子的意见。: )*

于 2011-01-17T20:14:07.020 回答