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

拡張引用符でのビーストで使用される変数には、式ではなく、すでに値が割り当てられている必要があります。これは、拡張引用符で囲まれたビーストがサーバー側ではなくクライアント側で評価されるためです。また、前述の理由から、JavaScriptを理解するエンドポイントで現在機能している場合でも、ビーストで「sum+1」を使用しないことをお勧めします。

これがあなたがやろうとしていることを私が書く方法です:

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でアプリのアクションショットを数回実行します。 代替テキスト

*また、前のルールのポストルードを使用してアプリとエンティティの変数を変更し、それがインクリメントされることを期待して次のルールで使用することはお勧めしません。あなたがしたことは機能しますが、それは意味的に乱雑であり、おそらく私が示した方法では少しきれいになるでしょう。

**これはただ一人の狂った男の意見なので、一粒の塩と一緒に服用する必要があります。:)*

于 2011-01-17T20:14:07.020 に答える