glox/class.go
2025-02-03 15:37:14 +02:00

37 lines
607 B
Go

package main
import "fmt"
type Class struct {
name string
}
type ClassInstance struct {
klass *Class
props map[string]any
}
func (c *ClassInstance) String() string {
return fmt.Sprintf("instance of %s", c.klass.name)
}
func (c *ClassInstance) get(name string) (any, bool) {
val, ok := c.props[name]
return val, ok
}
func (c *ClassInstance) set(name string, val any) {
c.props[name] = val
}
func (c *Class) arity() int {
return 0
}
func (c *Class) call(i *Interpreter, args ...any) (ret any) {
return &ClassInstance{c, map[string]any{}}
}
func (c *Class) String() string {
return c.name
}