Эффект
Эффект является результатом правила политики. И Эффект
- это интерфейс для эффектов Камбина.
Эффекты слияния ()
Объединить все совпадающие результаты, собранные силовиком в единое решение.
Например:
Эффект, объясняющий индекс, 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
, это будет короткий контур некоторые эффекты в центре.
:::