| 123456789101112131415161718192021222324252627282930 |
- package object
- func NewEnvironment() *Environment {
- s := make(map[string]Object)
- return &Environment{store: s, outer: nil}
- }
- func NewEnclosedEnvironment(outer *Environment) *Environment {
- env := NewEnvironment()
- env.outer = outer
- return env
- }
- type Environment struct {
- store map[string]Object
- outer *Environment
- }
- func (e *Environment) Get(name string) (Object, bool) {
- obj, ok := e.store[name]
- if !ok && e.outer != nil {
- obj, ok = e.outer.Get(name)
- }
- return obj, ok
- }
- func (e *Environment) Set(name string, val Object) Object {
- e.store[name] = val
- return val
- }
|