diff options
| author | Mel <einebeere@gmail.com> | 2022-08-16 20:33:41 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-16 20:33:41 +0000 |
| commit | d84c0f36afcde4e5af2907d70931de75957d5277 (patch) | |
| tree | 9eb056ca70c6bedf0ee6456baa4c1f7251384463 /pkg/lang/vm/value | |
| parent | 51eb7626b788dc031c53016f203a54a2af762d9e (diff) | |
| download | jinx-d84c0f36afcde4e5af2907d70931de75957d5277.tar.zst jinx-d84c0f36afcde4e5af2907d70931de75957d5277.zip | |
Implement setting values at index in an array
Diffstat (limited to 'pkg/lang/vm/value')
| -rw-r--r-- | pkg/lang/vm/value/data.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go index 1cd258b..59e4742 100644 --- a/pkg/lang/vm/value/data.go +++ b/pkg/lang/vm/value/data.go @@ -108,6 +108,20 @@ func (a ArrayData) At(m mem.Mem, i int) (Value, error) { return arr[i], nil } +func (a ArrayData) Set(m mem.Mem, i int, v Value) error { + data, err := m.Get(a.data) + if err != nil { + return err + } + arr := data.(ArrayCell).Get() + arr[i] = v + + if err := m.Set(a.data, ArrayCell(arr)); err != nil { + return err + } + return nil +} + func (a ArrayData) Push(m mem.Mem, v Value) error { data, err := m.Get(a.data) if err != nil { |
