Structures are defined at the module-level:
module sample struct Person = { name, age, email } function main = |args| { let p1 = Person("Mr Bean", 54, "bean@gmail.com") println(p1: name()) let p2 = Person(): name("John"): age(32): email("john@b-root.com") println(p2: age()) }
When declaring a structure, it also defines two factory functions: one with no arguments, and one
with all arguments in their order of declaration in the struct
statement. When not initialized,
member values are null
.
Each member yields a getter and a setter method: given a member a
, the getter is method a()
while the setter is method a(newValue)
. It should be noted that setter methods return the
structure instance which makes it possible to chain calls as illustrated in the previous example
while building p2
.