将操作分配给变量

时间:2011-05-04 19:05:03

标签: krl

在回答Aaron's recent question时,我想做以下事情:

rule first_rule {
    select when pageview "exampley.com/\?name=(.*)" setting (username)
    pre {
        isjoe = username eq "joe";
        myaction = defaction() {
            thisaction = isjoe => notify("Hello, World", "Hi there, Joe!") | noop();
            thisaction();
        };
    }
    {
        notify("Will it work?", "Methinks you are #{username}");
        myaction();
    }
}

但是,这种反应似乎永远不会奏效。它不喜欢我试图将一个动作分配给变量然后返回该变量。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你真的很亲密。

在无法解决之前,您无法调用操作。您需要创建一个将执行延迟到正确时间的defaction。

变化:

thisaction = isjoe => notify("Hello, World", "Hi there, Joe!") | noop();

thisaction = isjoe => defaction(){notify("Hello, World", "Hi there, Joe!");} | noop;

请注意添加的defaction,我从noop删除了parens。

这个概念类似于javascript闭包。