small tutorial on objects and references in nim
You declare an object in nim with a type statement. This is very much the same as a struct in C/C++
# an object
type Person = object
name : string
age : int
To create objects you use the name of object to create it. You can initialize variables or not.
# make an empty object
let p1 = Person()
# make an object with values
let p2 = Person(name: "tony", age:54)
# print it
echo(p2)
To access a field contained in the object use the .
to get the field value.
# access the age
echo("just the age:", p2.age)
nim has something called a traced reference. Presumably the traced part is referring to a garbage collector.
You declare a reference in a type section as seen below.
Once you have done that you can access the fields in the object that is pointed to with the .
operator.
# make a new type that points to a Person
type
pPerson = ref Person
# point pp2 to p2
let pp2 = p2
# print from the ref
echo(pp2)
# print a field from the ref
echo("just the age from ref", pp2.age)