List (SortOrder function): Difference between revisions
m (1 revision) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{Template:SortOrder:List subtitle}} | {{Template:SortOrder:List subtitle}} | ||
This shared function is a virtual constructor, or factory method, for <var>SortOrders</var>. | This shared function is a [[Object variables#Virtual Constructor methods|virtual constructor]], or factory method, for <var>SortOrders</var>. | ||
The <var>List</var> | The <var>List</var> | ||
method invokes the creation of a new <var>SortOrder</var> instance, then populates that | method invokes the creation of a new <var>SortOrder</var> instance, then populates that | ||
Line 27: | Line 27: | ||
==Usage notes== | ==Usage notes== | ||
<ul> | <ul> | ||
<li><var>List</var> is a virtual constructor and as such can be called with no method | |||
<li><var>List</var> is a constructor and as such can be called with no method | object, with an explicit class specification, or with an object variable of the class, | ||
object, with an explicit class | |||
even if that object is <var>Null</var>: | even if that object is <var>Null</var>: | ||
<p class="code">%sortOrder = List(<i>sortOrderItems</i>) | <p class="code">%sortOrder = List(<i>sortOrderItems</i>) | ||
%sortOrder = %(sortorder for float):List(<i>sortOrderItems</i>) | %sortOrder = %(sortorder for float):List(<i>sortOrderItems</i>) | ||
%sortOrder = %sortOrder:List(<i>sortOrderItems</i>) | %sortOrder = %sortOrder:List(<i>sortOrderItems</i>) | ||
</p> | </p> | ||
Line 50: | Line 51: | ||
The following <var>List</var> statement | The following <var>List</var> statement | ||
inserts the <code>%myorder</code> criteria into the middle of two other sort criteria: | inserts the <code>%myorder</code> criteria into the middle of two other sort criteria: | ||
<p class="code">%mynewOrder = list(ascending(length), %myorder, | <p class="code">%mynewOrder = list(ascending(length), %myorder, descending(reverse)) | ||
</p> | </p> | ||
You can even pass a <var>List call</var> within a <var>List</var> call: | You can even pass a <var>List call</var> within a <var>List</var> call: | ||
<p class="code">%myorder = list(ascending(change), | <p class="code">%myorder = list(ascending(change), list(ascending(quantity), descending (price))) | ||
</p> | </p> | ||
==See also== | ==See also== | ||
{{Template:SortOrder:List footer}} | {{Template:SortOrder:List footer}} |
Revision as of 20:53, 29 July 2011
Create a composite SortOrder (SortOrder class)
This shared function is a virtual constructor, or factory method, for SortOrders.
The List
method invokes the creation of a new SortOrder instance, then populates that
instance with items from an input list that are themselves SortOrder instances.
Designed for specifying multiple sort criteria, the SortOrders in the object that
List returns are applied consecutively by the sorting method
that uses the SortOrder.
Syntax
%sortOrder = [%(SortOrder For itemType):]List( sortOrderItems)
Syntax terms
%sortOrder | A SortOrder object variable to contain the new object instance. |
---|---|
%(SortOrder For itemtype) | This optional specification of the class in parentheses indicates that the method is shared and does not operate on a specific instance. If you use this option, however, you must include the collection item type to which the selection expression will be applied, like this: %(SortOrder For itemtype): |
sortOrderItems | A comma-delimited set of SortOrder objects, which may be explicitly specified Ascending/Descending constructors,
SortOrder object variables, or another SortOrder List specification. These individual SortOrders are applied to the target collection items in the order they are specified in this argument. If a SortOrder likeascending(price) is a single sort criterion, then the maximum number of sort criteria a List call may produce is seven. |
Usage notes
- List is a virtual constructor and as such can be called with no method
object, with an explicit class specification, or with an object variable of the class,
even if that object is Null:
%sortOrder = List(sortOrderItems) %sortOrder = %(sortorder for float):List(sortOrderItems) %sortOrder = %sortOrder:List(sortOrderItems)
Examples
The typical way to use SortOrder lists is in a collection class sorting method invocation:
%orders:sort(%myorder)
Where, for example:
%myorder = list(ascending(quantity), descending(price))
Since the arguments to the SortOrder List method are also SortOrders, you could
also pass the %myorder
variable in another List call.
The following List statement
inserts the %myorder
criteria into the middle of two other sort criteria:
%mynewOrder = list(ascending(length), %myorder, descending(reverse))
You can even pass a List call within a List call:
%myorder = list(ascending(change), list(ascending(quantity), descending (price)))