Присвоение действий переменной
Отвечая на недавний вопрос Аарона, я хотел бы сделать что-то вроде следующего:
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 ответ
Решение
Вы действительно близко.
Вы не можете вызвать действие до конца дефекации. Вам нужно создать дефекацию, которая задерживает выполнение до нужного времени.
Изменить:
thisaction = isjoe => notify("Hello, World", "Hi there, Joe!") | noop();
в
thisaction = isjoe => defaction(){notify("Hello, World", "Hi there, Joe!");} | noop;
Обратите внимание на добавленное осквернение, и я удалил паренсы из noop
,
Эта концепция похожа на закрытие JavaScript.