And and Or (SelectionCriterion functions): Difference between revisions
mNo edit summary |
m (→Syntax terms) |
||
(24 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Template:SelectionCriterion:And and Or subtitle}} | |||
These shared methods each create a new SelectionCriterion object | These [[Notation conventions for methods#Shared members|shared methods]] each create a new <var>SelectionCriterion</var> object | ||
that is an expression used to select the items in a collection. | that is an expression used to select the items in a collection. | ||
Each | Each function uses a different logical operator | ||
to form an expression that combines one or more SelectionCriterion objects. | to form an expression that combines one or more <var>SelectionCriterion</var> objects. | ||
An | An <var>Or</var> criterion returns true for a collection item if any of the | ||
component SelectionCriterion expressions are true for the item; | component <var>SelectionCriterion</var> expressions are true for the item; | ||
otherwise it returns false. | otherwise it returns false. | ||
An | An <var>And</var> criterion returns true if all of the | ||
component SelectionCriterion expressions are true for the item; | component <var>SelectionCriterion</var> expressions are true for the item; | ||
otherwise it returns false. | otherwise it returns false. | ||
The collection searching method | The [[Collections#Searching a collection|collection searching method]] | ||
that makes use of a | that makes use of a <var>SelectionCriterion</var> specifies: | ||
<ul> | <ul> | ||
<li>Whether to return the first item or item number or all items that satisfy the | <li>Whether to return the first item or item number or all items that satisfy the | ||
Line 26: | Line 20: | ||
<li>Where in the collection to begin searching. | <li>Where in the collection to begin searching. | ||
</ul> | </ul> | ||
=== | ==Syntax== | ||
{{Template:SelectionCriterion:And syntax}} | |||
{{Template:SelectionCriterion:Or syntax}} | |||
===Syntax terms=== | ===Syntax terms=== | ||
< | <table class="syntaxTable"> | ||
< | <tr><th>%selectionCriterion</th> | ||
< | <td>A <var>SelectionCriterion</var> object variable to contain the new object instance. </td></tr> | ||
< | <tr><th nowrap="true"><var>[%(SelectionCriterion For </var>itemType<var>):]</var> | ||
< | <td>This optional specification of the class in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|"Usage notes"]], below, for more information about invoking a <var>SelectionCriterion</var> virtual constructor. </td></tr> | ||
in parentheses | <tr><th>list</th> | ||
<td>A comma-separated list of one or more <var>SelectionCriterion</var> objects. </td></tr> | |||
< | |||
< | |||
</ | </table> | ||
==Usage notes== | |||
<ul> | <ul> | ||
<li>All | <li>As described in [[Object variables#Virtual Constructor methods|"Virtual Constructor methods"]], <var>And</var> and <var>Or</var> can be invoked with | ||
no method object, with an explicit class specification, or with an object variable of the class, | |||
even if that object is <var>Null</var>: | |||
<p class="code">%selCrit = And(<i>list</i>) | |||
%selCrit = %(SelectionCriterion for float):Or(<i>list</i>) | |||
%selCrit = %selCrit:And(<i>list</i>) | |||
</p> | |||
'''Note:''' | |||
As shown in the second of these above, if you explicitly specify the | |||
class name, you must include the item datatype of the collection to be searched, just as on a <var>SelectionCriterion</var> object variable's [[SelectionCriterion class#Declaring a SelectionCriterion object variable|declaration]]. | |||
<li>All <var>Or</var> and <var>And</var> <var>SelectionCriterion</var> conditions | |||
are short-circuiting conditions. | are short-circuiting conditions. | ||
That is, if any of the conditions in | That is, if any of the conditions in | ||
an | an <var>Or</var> return True, the subsequent conditions are not evaluated and the | ||
<var>Or</var> returns True. | |||
Similarly, if any of the conditions in an | Similarly, if any of the conditions in an <var>And</var> return | ||
False, the subsequent conditions are not evaluated, and the | False, the subsequent conditions are not evaluated, and the <var>And</var> returns a | ||
False. | False. | ||
Therefore, it is wise to put the most likely conditions first | Therefore, it is wise to put the most likely conditions first | ||
in an | in an <var>Or</var>, and it is wise to put the least likely first in an <var>And</var>. | ||
For a mix | For a mix | ||
of conditions where some are simply variable references and others require | of conditions where some are simply variable references and others require | ||
Line 59: | Line 65: | ||
first, as these are probably much cheaper to evaluate. | first, as these are probably much cheaper to evaluate. | ||
</ul> | </ul> | ||
==Examples== | |||
<ol> | <ol> | ||
<li>The following criterion | <li>The following criterion | ||
matches numbers less than 70 and greater than or equal to 95: | matches numbers less than 70 and greater than or equal to 95: | ||
< | <p class="code">%sel = OR(lt(this,70), ge(this,95)) | ||
</p> | |||
</ | |||
<li>The following criterion matches numbers that are | <li>The following criterion matches numbers that are | ||
less than or equal to 33 but not 30: | less than or equal to 33 but not 30: | ||
< | <p class="code">%sel = AND(le(this, 33), ne(this,30))) | ||
</p> | |||
</ | |||
</ol> | </ol> | ||
==See also== | |||
{{Template:SelectionCriterion:And and Or footer}} | |||
[[Category:SelectionCriterion methods]] |
Latest revision as of 21:11, 30 November 2011
Create selection expression based on logical operator (SelectionCriterion class)
These shared methods each create a new SelectionCriterion object
that is an expression used to select the items in a collection.
Each function uses a different logical operator
to form an expression that combines one or more SelectionCriterion objects.
An Or criterion returns true for a collection item if any of the component SelectionCriterion expressions are true for the item; otherwise it returns false. An And criterion returns true if all of the component SelectionCriterion expressions are true for the item; otherwise it returns false.
The collection searching method that makes use of a SelectionCriterion specifies:
- Whether to return the first item or item number or all items that satisfy the selection criterion.
- Where in the collection to begin searching.
Syntax
%selectionCriterion = [%(SelectionCriterion For itemType):]And( list)
%selectionCriterion = [%(SelectionCriterion For itemType):]Or( list)
Syntax terms
%selectionCriterion | A SelectionCriterion object variable to contain the new object instance. |
---|---|
[%(SelectionCriterion For itemType):] | This optional specification of the class in parentheses denotes a virtual constructor. See "Usage notes", below, for more information about invoking a SelectionCriterion virtual constructor. |
list | A comma-separated list of one or more SelectionCriterion objects. |
Usage notes
- As described in "Virtual Constructor methods", And and Or can be invoked with
no method object, with an explicit class specification, or with an object variable of the class,
even if that object is Null:
%selCrit = And(list) %selCrit = %(SelectionCriterion for float):Or(list) %selCrit = %selCrit:And(list)
Note: As shown in the second of these above, if you explicitly specify the class name, you must include the item datatype of the collection to be searched, just as on a SelectionCriterion object variable's declaration.
- All Or and And SelectionCriterion conditions are short-circuiting conditions. That is, if any of the conditions in an Or return True, the subsequent conditions are not evaluated and the Or returns True. Similarly, if any of the conditions in an And return False, the subsequent conditions are not evaluated, and the And returns a False. Therefore, it is wise to put the most likely conditions first in an Or, and it is wise to put the least likely first in an And. For a mix of conditions where some are simply variable references and others require method evaluation, it probably is best to put the variable references first, as these are probably much cheaper to evaluate.
Examples
- The following criterion
matches numbers less than 70 and greater than or equal to 95:
%sel = OR(lt(this,70), ge(this,95))
- The following criterion matches numbers that are
less than or equal to 33 but not 30:
%sel = AND(le(this, 33), ne(this,30)))