Refactoring
This commit is contained in:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user