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() { ... }
}