*= оператор на языке формул в Lotus Notes

Скажите, пожалуйста, какова роль оператора *= в приведенном ниже фрагменте кода?

@If(@UserRoles *= "[admin]" ; "" ; @Return(""));

Это язык формул, используемый в базах данных Lotus Notes.


person NotesArt    schedule 27.03.2012    source источник


Ответы (1)


Это Permuted Equal.

 if a="this" or a="that" or a="other" then....

Таким образом, этот код устанавливается в «», если он является администратором, в противном случае он заменяется «».

Согласитесь с @rhsatrhs, это неясно и должно быть написано с использованием обычного символа =.

Вот ссылка официальная документация операторов Permutations.

person FlavorScape    schedule 27.03.2012
comment
Спасибо за ответ. Я использую его, потому что должен делать то, что было назначено. - person NotesArt; 27.03.2012
comment
В этом случае переставленный оператор равенства совершенно не нужен и должен быть удален для ясности. При сравнении списка со скаляром, как здесь, скаляр сравнивается с каждым элементом списка. Другими словами, вы получаете поведение if a=this или a=that с помощью обычного оператора =, поэтому @UserRoles = [admin] — это все, что вам нужно, даже если у пользователя есть несколько ролей. Оператор *= полезен только при сравнении двух списков, и в этом случае каждый элемент списка A сравнивается с каждым элементом списка B. - person Richard Schwartz; 28.03.2012
comment
И нет, *= не похож на тернарный оператор в других языках. Присвоение оператора @If переменной является формулой Notes, эквивалентной тернарному оператору. То есть формула Notes x:= @If(condition,value1,value2); является эквивалентом условия x = в C или Java? значение1 : значение2; - person Richard Schwartz; 28.03.2012