Refactoring

This commit is contained in:
Michael Schimmel
2026-01-06 12:10:12 +01:00
parent da59fbdf3f
commit fb2fc8f6f9
+9 -5
View File
@@ -356,24 +356,28 @@ begin
idx := Visit(N.Index);
case base.Kind of
vkSeries: Result := TDataValue(base.AsSeries.Items[Integer(idx.AsScalar.Value.AsInt64)]);
vkSeries:
begin
var i: Integer := idx.AsScalar.Value.AsInt64;
Result := base.AsSeries.Items[i];
end;
vkRecordSeries:
begin
var i: Integer := idx.AsScalar.Value.AsInt64;
var rs := base.AsRecordSeries;
var vals: TArray<TScalar.TValue>;
SetLength(vals, rs.Def.Count);
var i64 := idx.AsScalar.Value.AsInt64;
for var k := 0 to rs.Def.Count - 1 do
vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[Integer(i64)].Value;
vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[i].Value;
Result := TScalarRecord.Create(rs.Def, vals);
end;
vkTuple:
begin
var i: Integer := idx.AsScalar.Value.AsInt64;
var tpl := base.AsTuple;
var i := idx.AsScalar.Value.AsInt64;
if (i < 0) or (i >= tpl.Count) then
raise EEvaluatorException.Create('Tuple index out of bounds');
Result := tpl.Items[Integer(i)];
Result := tpl.Items[i];
end;
else
raise EEvaluatorException.Create('Indexer error');