我目前的任务是将旧的 pascal 脚本翻译成 python。问题是,我对 pascal 没有任何经验......直到现在,一切都很好(大部分脚本都是不言自明的),但现在我遇到了一小段代码,我只是想不通出去:
# some other code here...
type MeasurementPoint = record
lambda : double;
value : double;
end;
# some more code...
procedure foo(MyFileName: string, somemoreargs):
var somevars: integer;
somemorevars: double;
temp: MeasurementPoint;
# even more code...
i:= 0;
Assign(MyInFile,MyFileName);
Reset(MyInFile);
repeat
Inc(i);
SetLength(Reflexion, i);
readln(MyInFile, temp.lambda, temp.value);
Reflexion[i-1]:=temp;
until EoF(MyInFile);
Close(MyInFile);
我只是无法理解这部分代码应该做什么......我非常理解MyInFile正在逐行读取完整文件,并且每行包含两个值,即'lambda'和'value',它们被提取作为双打。
根据 pascal wiki,record容器是否能够容纳不同类型的对象并在逻辑上将它们组合在一起(这可以与 python 中的字典进行比较吗?)。如果我理解SetLength正确,它用于定义数组的长度,这在这里很有意义。i每次读取一行时都会增加,因此temp增加的长度以适应已从文件中提取的lambda和value对的数量(如果我的假设错误,请纠正我!)。但我不明白其余的代码应该做什么,尤其是Reflexion[i-1]:=temp. 是长度为 i-1Reflexion的类型的对象MeasurementPoint吗?或者那部分是什么意思?为什么lambda和value提取为temp.lambda和temp.value? 这是否会自动将它们配对在记录中......?
如果有人可以通过解释这一点来帮助我,我将不胜感激。而且,当然,如果您碰巧知道如何将其转换为 python 3.x,那就更好了 ;-)
千巷猫影
相关分类