copy - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


copy

create a duplicate table, rtable, or module

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

copy( a )

copy( a , deep)

Parameters

a

-

any expression

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

> 

s1≔x

s1≔x

(1)
> 

t≔s

t≔s

(2)
> 

t1≔y

t1≔y

(3)
> 

s1

y

(4)
> 

u≔copy⁡s

u≔table⁡1=y

(5)
> 

u1≔z

u1≔z

(6)
> 

s1

y

(7)
> 

m≔Matrix⁡1,shape=symmetric,a,readonly

m≔a

(8)
> 

MatrixOptions⁡m

shape=symmetric,datatype=anything,storage=triangularupper,order=Fortran_order,readonly

(9)
> 

n≔copy⁡m

n≔a

(10)
> 

MatrixOptions⁡n

shape=symmetric,datatype=anything,storage=triangularupper,order=Fortran_order

(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.

> 

S≔table⁡45,table⁡symmetric,1,2=3

S≔table⁡1=45,2=table⁡symmetric,1,2=3

(12)
> 

S1

45

(13)
> 

T≔copy⁡S

T≔table⁡1=45,2=table⁡symmetric,1,2=3

(14)
> 

T1

45

(15)
> 

T1≔50

T1≔50

(16)
> 

S1

45

(17)
> 

S22,1

3

(18)
> 

T22,1≔5

T22,1≔5

(19)
> 

S22,1

5

(20)

For a list of records, deep must be used to obtain unique instances of the records.

> 

rl≔Record⁡a=1,b=2,Record⁡a=3,b=4

rl≔Record⁡a=1,b=2,Record⁡a=3,b=4

(21)
> 

rl_copy≔copy⁡rl

rl_copy≔Record⁡a=1,b=2,Record⁡a=3,b=4

(22)
> 

rl_deep≔copy⁡rl,deep

rl_deep≔Record⁡a=1,b=2,Record⁡a=3,b=4

(23)
> 

rl1a≔7

rl1a≔7

(24)
> 

rl_copy1a

7

(25)
> 

rl_deep1a

1

(26)

See Also

Array

Matrix

rtable

table

Vector