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); idx := Visit(N.Index);
case base.Kind of 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: vkRecordSeries:
begin begin
var i: Integer := idx.AsScalar.Value.AsInt64;
var rs := base.AsRecordSeries; var rs := base.AsRecordSeries;
var vals: TArray<TScalar.TValue>; var vals: TArray<TScalar.TValue>;
SetLength(vals, rs.Def.Count); SetLength(vals, rs.Def.Count);
var i64 := idx.AsScalar.Value.AsInt64;
for var k := 0 to rs.Def.Count - 1 do 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); Result := TScalarRecord.Create(rs.Def, vals);
end; end;
vkTuple: vkTuple:
begin begin
var i: Integer := idx.AsScalar.Value.AsInt64;
var tpl := base.AsTuple; var tpl := base.AsTuple;
var i := idx.AsScalar.Value.AsInt64;
if (i < 0) or (i >= tpl.Count) then if (i < 0) or (i >= tpl.Count) then
raise EEvaluatorException.Create('Tuple index out of bounds'); raise EEvaluatorException.Create('Tuple index out of bounds');
Result := tpl.Items[Integer(i)]; Result := tpl.Items[i];
end; end;
else else
raise EEvaluatorException.Create('Indexer error'); raise EEvaluatorException.Create('Indexer error');