Example Vector copy 004

 

 

Description

This example shows how a Vector may be modified destructively or non-destructively using the the copy and setq function.

 

Details

The original Vector.

(define x #("The " "Rain " "in " "Spain") ) Returns: #<Vector 123456>

The copied Vector using the copy function.

(setq z (copy x)) Returns: #<Vector 234567>

The copied Vector using the setq function.

(setq twin x) Returns: #<Vector 345678>

After the first setq function, the values of Vector z are:

z[0] Returns: The
z[1] Returns: Rain
z[2] Returns: in
z[3] Returns: Spain

After the first setq function, the values of Vector x are:

z[0] Returns: The
x[1] Returns: Rain
x[2] Returns: in
x[3] Returns: Spain

The container named z is a copy of x (both are Vectors) and z has a separate memory space. However, the containers named x and twin point to the same memory spaces on the heap. Therefore

(setq twin[1] "Hail" ) Returns: #<Vector 123456>

The setq command results in the contents of both twin and x being both the same.

twin[1] Returns: Hail
x[1] Returns: Hail

Since z points to a different memory space, it still retained the original value which was copied from x before the values of x were modified.

z[1] Returns: Rain

Notes and Hints

Using the setq function results in objects having the same object id. But the object that is being assigned the copied object has a different object id than original object. In this example twin and x have the same object id while z has a different object id.

 

Related Examples

Here are examples of the copy function at work.

BitVector copy 011 Brick copy 012 CpxVector copy 013 Dictionary copy 002
Directory copy 003 FltVector copy 006 IntVector copy 007 Lambda copy 008
List copy 010 Matrix copy 006 Matrix copy 007 NumMatrix copy 011
NumVector copy 008 ObjVector copy 009 Pair copy 009 PcodeVector copy 010
ShortVector copy 008 Structure copy 001 Vector copy 004 Vector copy 005

 

Function Links

Here is the link to the current function used in this example.

copy

Here are a number of links to other related functions.

setq(#void)

 

Argument Types

Here are the links to the data types of the arguments used in this example.

Vector

Here are a number of links to examples having similar argument types.

BitVector bitToIntegerVector 001 BitVector isBitVector 001 CpxVector apply 010 Dictionary isDictionary 001
Dictionary objectToDictionary 001 Dictionary objectToDictionary 002 Dictionary objectToDictionary 003 Dictionary objectToDictionary 004
Dictionary refValues 002 Dictionary setAttributes 002 Dictionary sort 003 Directory objectToDirectory 001
Directory objectToDirectory 002 Directory objectToDirectory 003 Directory objectToDirectory 004 Directory refValues 003
Directory setAttributes 003 FltVector binaryInsert 004 FltVector compareLE 014 FltVector compareLT 014
FltVector isFloatVector 001 IntVector binaryInsert 005 IntVector bitToIntegerVector 002 IntVector isIntegerVector 001
Matrix binaryInsert 004 Matrix compareGT 007 Matrix compareLT 007 Matrix matrixGaussianSubstitute 001
NumMatrix matrixGaussianSubstitute 001 NumVector isNumberVector 001 NumVector objectToNumVector 001 NumVector svmRegression 001
Number product 001 ObjVector isObjectVector 001 PcodeVector isPcodeVector 001 String find 001
String find 002 String isChar 001 String isCharAlphabetic 001 String isCharAlphanumeric 001
String isCharLowercase 001 String isCharName 001 String isCharNumeric 001 String isCharUppercase 001
String isCharWhitespace 001 String isEqual 001 String isEqual 002 String isObject 001
String isString 001 String isText 001 String isType 001 String isType 002
String isType 003 String parse 001 String sizeof 001 String string 001
String string 002 String string 003 String stringToBVector 001 String stringToBVector 002
String stringToBVector 003 String stringToVector 001 String stringToVector 002 String stringToVector 003
String stringToVector 004 String type 001 Structure objectToStructure 001 Structure objectToStructure 002
Structure objectToStructure 003 Structure objectToStructure 004 Structure setAttributes 001 Symbol isCharName 002
Symbol isCharNumeric 002 Symbol isObject 002 Symbol isSymbol 001 Symbol isType 004
Symbol sizeof 002 Symbol type 002 Vector addMethod 007 Vector append 006
Vector appendWriteln 001 Vector apply 003 Vector apply 004 Vector binaryInsert 002
Vector binaryInsert 003 Vector binarySearch 003 Vector binarySearch 004 Vector cdr 005
Vector cdr 006 Vector compare 006 Vector compareEQ 006 Vector compareGE 006
Vector compareGT 006 Vector compareLE 006 Vector compareLT 006 Vector compareNE 006
Vector comparison functions 006 Vector copy 004 Vector copy 005 Vector count 004
Vector defmethod 008 Vector delete 007 Vector delete 008 Vector insert 004
Vector inside 004 Vector isAtom 004 Vector isEqual 004 Vector isIdentical 004
Vector isObject 006 Vector isType 008 Vector isVector 001 Vector length 007
Vector map 004 Vector mapc 004 Vector member 004 Vector methodsOf 009
Vector new 007 Vector new 008 Vector objectToVector 001 Vector ref 013
Vector ref 014 Vector refAttributes 004 Vector refValues 004 Vector remove 004
Vector resize 004 Vector reverse 001 Vector send 006 Vector setAttributes 004
Vector setAttributes 005 Vector setBlock 001 Vector setCdr 004 Vector setLastCdr 002
Vector setq 012 Vector setq 013 Vector sizeof 006 Vector sort 010
Vector sort 011 Vector type 009 Vector uniqueInsert 003 Vector vectorFill 001

Analytic Information Server (AIS)

AIS Component Systems

  • Smartbase Engine
  • QT C++ Libraries
  • MySQL Relational Database
  • AIS Lisp Libraries
  • Rapid Analytic Demo IDE