A boolean variable can be True or False, and so a boolean statement must resolve to a value of True or False. There are several ways to do both that you may see when reading other peoples source code, so lets go through a few variations of how to use booleans in an efficient manner.
An If statement ALWAYS resolves to a boolean value or it raises and error, but If statements can look differently depending on how they are written. Consider this line:
That is a straight forward If statement. If custnum is greater that 10 the statement is true and the execution code is run, otherwise the rest of the statement is skipped until an Else or End If is encountered.
Now lets look at other ways to test for the condition of custnum being greater than 10 that may be done from another sub routine, or another module or activity.
Then we can write our If statement like this:
Notice that no where does the code above directly check the VALUE of checkcust like:
...
That's because it is not needed. This is a short circuit comparison and it applies to all booleans. You do not need to specify the value that you want to see, you can simply let the underlying language logic do it for you.
Will be True if CheckCust is False, while:
Will only be true if CheckCust is True. In the CheckCust subroutine above, the boolean value is determined if custnum is greater than 10 like this:
That is a boolean evaluation, it is asking b4a, b4j, b4i, or any other language to return a boolean (True or False) value for the statement:
custnum > 10
If it is true, the sub returns True, if it is not then the sub returns False. You can reverse the result of any boolean with the Not() keyword, and sometime this is not only handy, but necessary.
This lesson is only to show you different ways of writing the same boolean statement and is not meant to be a better or worse way to handle these. The best way to write code is the way that is most comfortable for you.
--- Jem
An If statement ALWAYS resolves to a boolean value or it raises and error, but If statements can look differently depending on how they are written. Consider this line:
B4X:
If CustNum > 10 Then
... execution code here
End If
That is a straight forward If statement. If custnum is greater that 10 the statement is true and the execution code is run, otherwise the rest of the statement is skipped until an Else or End If is encountered.
Now lets look at other ways to test for the condition of custnum being greater than 10 that may be done from another sub routine, or another module or activity.
B4X:
Sub CheckCust as boolean
return custnum > 10
end Sub
Then we can write our If statement like this:
B4X:
If checkcust then
... execution code here
end if
Notice that no where does the code above directly check the VALUE of checkcust like:
B4X:
if checkcust = true then
That's because it is not needed. This is a short circuit comparison and it applies to all booleans. You do not need to specify the value that you want to see, you can simply let the underlying language logic do it for you.
B4X:
If Not(CheckCust) Then
Will be True if CheckCust is False, while:
B4X:
If CheckCust Then
Will only be true if CheckCust is True. In the CheckCust subroutine above, the boolean value is determined if custnum is greater than 10 like this:
B4X:
return custnum > 10
That is a boolean evaluation, it is asking b4a, b4j, b4i, or any other language to return a boolean (True or False) value for the statement:
custnum > 10
If it is true, the sub returns True, if it is not then the sub returns False. You can reverse the result of any boolean with the Not() keyword, and sometime this is not only handy, but necessary.
This lesson is only to show you different ways of writing the same boolean statement and is not meant to be a better or worse way to handle these. The best way to write code is the way that is most comfortable for you.
--- Jem
Last edited: