Next: AssociativeArray, Previous: Array, Up: Classes [Index]
List ClassObjects of class List allow sets of objects to be sequentially
added, removed, and used as method receivers.
+= (Object obj1, ...)Add the items given in the argument to the receiver List. For example:
int main () {
List new l;
l = "first", "second", "third", "fourth";
l += "fifth", "sixth", "seventh", "eighth";
l map {
printf ("%s\n", self);
v }
}
= (Object obj1, ...)Push the arguments on to the receiver List. The arguments are a comma separated list of objects. For example:
int main () {
List new l;
l = "first", "second", "third", "fourth";
l map {
printf ("%s\n", self);
}
}
The = method initializes a list with only the objects that are
given as arguments. The memthod deletes any previous list contents.
append (Object obj1, ...)Add the objects given in the argument to the receiver List.
This is a synonym for the += method, above.
init (Object obj1, ...)This is a synonym for the = method, above.
map (OBJECT *(*method)())map (OBJECT *(*method)(), Object argument)map (OBJECT *(*method)(), Object argument1, Object argument2)Execute method, an instance method of class List, for
each member of the receiver List. Within method, self
refers to each successive list element. Here is an example.
List instanceMethod printElement (void) {
printf ("%s\n", self); /* Here, for each call to the printElement
method, "self" is each of myList's
successive members, which are String
objects. */
}
int main () {
List new myList;
myList = "item1", "item2", "item3"; /* Initialize the List with
three String objects. */
myList map printElement;
}
The map method can also use a code block as its argument.
The example above, written with a code block, would look like
this.
int main () {
List new myList;
myList = "item1", "item2", "item3"; /* Initialize the List with
three String objects. */
myList map {
printf ("%s\n", self);
}
}
If given with two arguments, method’s parameter list must have
one parameter. The parameter’s class is significant within method;
that is, map can use any class of object for argument.
Here is the example above with one argument for the printElement
method;
List instanceMethod printElement (String leftMargin) {
printf ("%s%s\n", leftMargin, self);
}
int main () {
List new myList;
String new leftMargin;
myList = "item1", "item2", "item3"; /* Initialize the List with
three String objects. */
leftMargin = "- ";
myList map printElement, leftMargin;
}
Calling map with three arguments works similarly.
The map methods in List class all return NULL.
mapRev (OBJECT *(*method)())Like map, except that it executes method for the last
member that was added to the receiver List, then the previous member,
and so on until the mapRev executes method for the first
member of the list before returning.
new (list1, list2, list3, ...;)Create the List objects list1, etc. For example:
List new list1, list2, list3;
pop (void)Remove the object from the end of the receiver’s list and return the object.
popItemRef (void)Here for backward compatibility; it is now the same as pop.
push (OBJECT *(*object)(int))Add object to the end of the receiver’s list contents.
pushItemRef (OBJECT *(*object)(int))Also here for backward compatibility, this method is now the same
as push.
shift (OBJECT *(*object)(int))Add object as the first element of the receiver’s list contents.
sortAscending (void)sortDescending (void)sortAscendingByName (void)sortDescendingByName (void)Sorts the receiver list based on either the members’ values or names,
in ascending or descending order. The sort algorithm is very simple
minded, but due to the mechanics of determining earlier/later
List members, the methods are as fast for small and medium
Lists as more complex sort algorithms.
If possible, you should try to add members in order rather than try
to re-arrange a List later. For this, refer to the
methods in SortedList class See SortedList.
unshift (void)Remove the first object from the receiver’s list and return the object.
value (void)Class List objects have no value instance variable.
Instead, return the List object’s contents, or NULL if
the list is empty.
Next: AssociativeArray, Previous: Array, Up: Classes [Index]