copy
create a duplicate table, rtable, or module
|
Calling Sequence
|
|
copy( a )
copy( a , deep)
|
|
Parameters
|
|
|
|
Description
|
|
•
|
The purpose of the copy function is to create a duplicate table, rtable, or record which can be altered without changing the original table, rtable, or record. If a is not a table, rtable, or record, and a deep copy is not requested, a is returned.
|
•
|
This functionality is necessary since the statements s := table(); t := s; leave both names s and t evaluating to the same table structure. Hence, unlike other Maple data structures, assignments made via one of the names affect the values associated with the other name as well.
|
•
|
Note that copy is not recursive. This means that if a is a table of tables, the table data structure for a is copied but the table structures for the entries of a are not copied. To obtain a full recursive copy where all contents that are also mutable structures are copied, or to obtain a copy of a module, use the deep option.
|
•
|
For an rtable, copy preserves rtable options and indexing functions, except for the readonly option, which is not set, and the source_rtable attribute.
|
|
|
Examples
|
|
>
|
|
| (9) |
| (11) |
For a table 'a' that contains another table 'b'; when copy is done on 'a' an entirely new copy of 'a' is created. However the objects contained in the table are not duplicated; so both 'a' and the copy of 'a' contain the table 'b'. Thus, if a change is made to the table 'b' in 'a', that change will show up in the copy of 'a' as well, and vice versa.
>
|
|
| (12) |
| (14) |
For a list of records, deep must be used to obtain unique instances of the records.
>
|
|
| (21) |
| (22) |
>
|
|
| (23) |
|
|
|
|
|
|