Clone

Clone(a) creates a copy of the object a.

The statement $a=b$ for objects creates two variables pointing to the same object. Changing the value of one object changes the value of the other.

Input

• a : object of any type

Output

• a' : object of same type as a and an exact copy of it.

Example a=b

A small example showing the effect on b after changing a when a=b:

Input

CloneNot.Quanty
-- some example codedofile("../definitions.Quanty")

Opp2 = Opp1
Opp1.Name = "I'm the name of operator one"
Opp2.Name = "I'm the name of operator two"
print(Opp1.Name)
print(Opp2.Name)

psi2 = psi1
psi1.Name = "I'm the name of psi one"
psi2.Name = "I'm the name of psi two"
print(psi1.Name)
print(psi2.Name)

Result

CloneNot.out
I'm the name of operator two
I'm the name of operator two
I'm the name of psi two
I'm the name of psi two

Example a=Clone(b)

A small example showing a=Clone(b):

Input

Clone.Quanty
dofile("../definitions.Quanty")

Opp2 = Clone(Opp1)
Opp1.Name = "I'm the name of operator one"
Opp2.Name = "I'm the name of operator two"
print(Opp1.Name)
print(Opp2.Name)

psi2 = Clone(psi1)
psi1.Name = "I'm the name of psi one"
psi2.Name = "I'm the name of psi two"
print(psi1.Name)
print(psi2.Name)

Result

Clone.out
I'm the name of operator one
I'm the name of operator two
I'm the name of psi one
I'm the name of psi two

Example a=a+b

A small example showing that operations acting on objects lead to cloning the object:

Input

CloneAuto.Quanty
dofile("../definitions.Quanty")

Opp = Opp1 + Opp2
Opp.Name = "I'm the name of operator Opp and different from Opp1 and Opp2"
print(Opp1.Name)
print(Opp2.Name)
print(Opp.Name)

Result

CloneAuto.out
Lx
Ly
I'm the name of operator Opp and different from Opp1 and Opp2