Присвоение действий переменной - PullRequest
1 голос
/ 04 мая 2011

Отвечая на недавний вопрос Аарона , я хотел бы сделать что-то вроде следующего:

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 Ответ

1 голос
/ 04 мая 2011

Вы действительно близко.

Вы не можете вызвать действие до конца дефекции.Вам нужно создать осквернение, которое задерживает выполнение до нужного времени.

Изменение:

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

на

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

Обратите внимание на добавленную осквернение, и я удалил пареныот noop.

Эта концепция аналогична замыканиям в JavaScript.

...