
Nim: Data Structures
More complex data structures can be defined via a type statement:
type
  State = enum
    Victoria, NewSouthWales, Queensland, Tasmania, SouthAustralia, NorthernTerritory, WesternAustralia, ACT
var home = Victoria
echo home
# Victoria
echo typeof home
# StateArrays in Nim are of fixed length with their size specificed at compile time. Sequences are like arrays, but have a dynamic length. They can be constructed by the array constructor [] in conjunction with the array to sequence operator @.
var
  x: seq[int] # a reference to a sequence of integers
x = @[1, 2, 3, 4, 5, 6]There’s also openarrays, though they can only be used as parameters:
proc openArraySize(oa: openArray[string]): int =
  oa.lenCreating a custom object is done by defining a new type, with a type of object:
type
  Person = object
    name: string
    age: int
var person1 = Person(name: "Peter", age: 30)
echo person1.name # "Peter"
echo person1.age  # 30Mark fields that should be visible from outside the defining module with *.
type
  Person* = object # the type is visible from other modules
    name*: string  # the field of this type is visible from other modules
    age*: intA similar but alternate approach for object-like behaviour is to use tuples:
type
  Person = tuple[name: string, age: int]
var
  person: Person
person = (name: "Peter", age: 30)Published: 21/03/2022
 
Hi, I'm Glenn! 👋 
I've spent most of my career working with or at startups. You'll usually find me working in Product leadership roles, on an advisory board, or maybe as an early investor.
I've been the VP of Product & GTM @ Ockam. I led the Terraform product team @ HashiCorp, where we launched Terraform 1.0, Terraform Cloud, and a whole host of amazing capabilities that set the stage for a successful IPO. Prior to that I was part of the Startup Team @ AWS, and earlier still an early employee @ Heroku. I've also invested in a couple of dozen early stage startups.
  I've spent most of my career working with or at startups. You'll usually find me working in Product leadership roles, on an advisory board, or maybe as an early investor.
I've been the VP of Product & GTM @ Ockam. I led the Terraform product team @ HashiCorp, where we launched Terraform 1.0, Terraform Cloud, and a whole host of amazing capabilities that set the stage for a successful IPO. Prior to that I was part of the Startup Team @ AWS, and earlier still an early employee @ Heroku. I've also invested in a couple of dozen early stage startups.