OCLOperators Not
(Automatically adding template at the end of the page.)
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
<message>Write the content here to display this box</message>
"Not" is the usual Not operator found in most languages.
"Not" is the usual Not operator found in most languages.


However, there are a few things to point out when writing expressions using True, False, nullable booleans, and Not.
However, there are a few things to point out when writing expressions using True, False, nullable booleans, and Not.


===== Avoid the Risk With Nullable Booleans =====
==== Avoid the Risk With Nullable Booleans ====
Consider ''xxxx.DisableEditing = false''
Consider <code>xxxx.DisableEditing = false</code>


When you think you want to use "a boolean" with '''= true/false,''' don't - it's almost never correct.
When you think you want to use "a boolean" with '''= true/false,''' don't - it's almost never correct.


The reason is that a nullable boolean is tri-state. '''False''', '''True,''' and '''Null'''.  If an expression is xxxx.DisableEditing - that is false for BOTH False and Null.
The reason is that a nullable boolean is tri-state. '''False''', '''True,''' and '''Null'''.  If an expression is <code>xxxx.DisableEditing</code> - that is false for '''<u>BOTH</u>''' False and Null.


So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many).
So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many).


'''For example:'''
===== For example: =====
  self.ValidTo.notNull and
  self.ValidTo.notNull and
  self.AddedTo.isNull and
  self.AddedTo.isNull and

Latest revision as of 05:45, 14 August 2024

"Not" is the usual Not operator found in most languages.

However, there are a few things to point out when writing expressions using True, False, nullable booleans, and Not.

Avoid the Risk With Nullable Booleans

Consider xxxx.DisableEditing = false

When you think you want to use "a boolean" with = true/false, don't - it's almost never correct.

The reason is that a nullable boolean is tri-state. False, True, and Null.  If an expression is xxxx.DisableEditing - that is false for BOTH False and Null.

So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many).

For example:
self.ValidTo.notNull and
self.AddedTo.isNull and
(self.Agreement.Facilitator.DisableEditing = false)

If DisableEditing is Null, then "(self.Agreement.Facilitator.DisableEditing = false)" is actually True. (the above false/null problem):

self.ValidTo.notNull and
self.AddedToJournalSearch.isNull and
not self.Agreement.Facilitator.DisableEditing
This page was edited 37 days ago on 08/14/2024. What links here