Classes
Constructible reference types with fields, methods and composed defines.
Declaring a class
player.sar
class Player {
var name string = "Unknown"
var score int64 = 0
func award(points int64) {
score = score + points
}
func description() string {
return name + ": " + score
}
}
func main() {
local var player Player = Player.new(name: "Bob" score: 100)
player.award(25)
print(player.description())
}Class fields use normal var and constdeclarations and always have defaults. Class methods can refer to fields and other methods directly. Constant fields cannot be assigned after construction.
Construction
ClassName.new() creates an instance using every field's default. Named constructor arguments override fields. Constructor arguments usefield: value; commas are optional between named arguments.
References and identity
Class instances are reference values. Assignment and function calls share the same instance. Equality compares object identity: two references to one instance are equal, while two separately constructed instances are not.