﻿ RECORDS ASSIGNMENT
TYL PROGRAMMING LANGUAGE
▶ RECORDS ASSIGNMENT
Assign Record by Another Record
Let's start with an experiment:
r1 {a 1}
r2 {}
r2 r1
print r2
{
a: 1
}
Line `r2 r1`, is a record assignment statement, where `r2` gets all mapping data of `r1`.

Let's see if `r2` is affected by changes in `r1`:
r1 {a 1}
r2 {}
r2 r1
r1.a 10
print r1
print r2
{
a: 10
}
{
a: 1
}
`r2` data is not affected, because the assignment does not construct a reference between the record variables, meaning the assignment action is only a data transfer from the source object to the target object.

Data access in assigned record:
r1 {a 11 b 12}
r2 {a 21 c 23}
print 'r1: ' + r1
print 'r2 (before assignment): ' + r2
r2 r1
print 'r2 (after assignment): ' + r2
print
! static and dynamic access values of r2
print 'r2.a: ' + r2.a
print 'r2 `a`: ' + r2 'a'
print 'r2.b: ' + r2.b
print 'r2 `b`: ' + r2 'b'
r1: {
a: 11
b: 12
}
r2 (before assignment): {
a: 21
c: 23
}
r2 (after assignment): {
a: 11
c: 23
b: 12
}

r2.a: 11
r2 'a': 11
r2.b: NULL
r2 'b': 12
As can be seen in the results, `r2` does not have a key 'b' in its declared mapping data, nor has been added implicitly, therefore `r2.b` is not a valid record access structure, and access should be done only in the format `r2 'b'`.

In this fix duration example:
starttime endtime { totalsecond 0 }
testnow { totalsecond 127613.2075469 }
starttime testnow
testnow.totalsecond 127614.2215487
endtime testnow
print startspan starttime.totalsecond
print endspan endtime.totalsecond
print endspan - startspan
127613.2075469
127614.2215487
1.01400180000928
In line '`starttime endtime { totalsecond 0 }`', we declared two record variables and assigned them a `totalsecond` property with an initial value 0, then `testnow` record that mimics a date & time utility is declared.
`starttime` and `endtime` are then assigned by `testnow`, and get the current `totalsecond`. Because `totalsecond` is present in the targets declarations mapping data, it is possible to access them by dot notation.
It is good practice to let the target of record assignment have all properties that need to get data, declared in advance.
PART 5
PART 7