Эффект
Эффект является результатом правила политики. И Эффект - это интерфейс для эффектов Камбина.
Эффекты слияния ()
Объединить все совпадающие результаты, собранные силовиком в единое решение.
Например:
Эффект, объясняющий индекс, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
В этом примере:
Эффектявляется окончательным решением, объединенным этой функцией (Инициализация какНеопределенная).explainIndex- это индексeftкоторыйРазрешитьилиОтклонить.(Инициализация как-1)errиспользуется для проверки поддерживаемого эффекта.expr- это эффекты политики, хранящиеся какстрокаэффекты- это массив эффекта, который может бытьРазрешить,НеопределенноилиОтклонитьсовпадает смассивом, показывающим, что если результат соответствует политике.policyIndexявляется индексом политики модели.Продолжительность политикиявляется продолжительностью политики.
Код выше показывает, как мы можем передать параметры функции MergeEffects , и функция обрабатывает эффекты и совпадения, основанные на expr
Чтобы развернуть Effector, мы можем сделать это:
var e Effector
Эффект, объясняющий индекс, err = e.MergeEffects(expr, effects, matches, policyLength)
The basic idea of the MergeEffects indicates that if the expr can match the results which means that the p_eft is allow, then we can merge all effects at last. И если нет никаких отрицательных правил, то мы разрешаем.
::note Если expr не может совпадать с "priority(p_eft) || deny" а также policyIndex короче policyLength-1, это будет короткий контур некоторые эффекты в центре.
:::