Skip to main content

Classes and Objects

A class defines a data structure you can instantiate:

class MyClass

let instance = MyClass()

Constructor parameters as fields​

Marking a constructor parameter with let or var makes it a stored field — immutable or mutable, respectively. This is a very common pattern in Nylon:

class Person(
let firstName: string,
let lastName: string,
let age: i32
) {
let sayHello() {
print("Hello ${firstName} ${lastName}")
}
}

entrypoint main() {
let person = Person("firstName", "lastName", 25)
person.sayHello()
}

If you need more control over construction, you can write the constructor explicitly:

class Person {
let first : string
let last : string
let age : int

public operator new(first: string, last: string, age: int) {
self.first = first
self.last = last
self.age = age
}
}

Data classes​

Marking a class data automatically generates equality and hashing, so instances can be used as map keys:

data class Person(firstName: string, lastName: string)

Singletons​

object Singleton {
let function() { ... }
}