Mozart/Oz : 将字符串转换为特征
Mozart/Oz : convert string to feature
我需要生成我事先不知道的特征名称,以便记录。
记录应如下所示:
record(day1:[...] day2:[...] day3:[...] ...)
.
由于我不知道记录会有多少天,所以我不能自己写特征名称!
我尝试了几件事:
{For 1 N 1
proc {$ I}
local
Label
Day="day"
in
...
% Label=Day+I
% cannot add a list and a number
% Label={List.append Day {Int.toString I}}
% creates the right string, but when trying to make the record: type error
% Label=dayI
% works but produces only "dayI" features, all the same
% Label=day + I
% cannot add a feature and a number
...
end
end
}
然后将所有标签处理在一个列表中,以便使用Record.makeTuple
。
有没有什么方法可以创建或操纵动态特征?
现在,我发现的唯一选择是使用字符串,而不是作为一个特征,而是使用一对:
record("day1"#[..] "day2"#[..] ...)
但这不是我想要的。
感谢您的回答或帮助。
记录的特征是原子。要将字符串转换为原子,请使用 String.toAtom
。例如:
declare
L = {String.toAtom "dynamic string"}
R = {MakeRecord record [L]}
{Show R}
但是,如果我没记错的话,有一个警告:原子不会被垃圾收集。如果您创建了很多不同的原子,您可能 运行 会出现内存问题。
我需要生成我事先不知道的特征名称,以便记录。
记录应如下所示:
record(day1:[...] day2:[...] day3:[...] ...)
.
由于我不知道记录会有多少天,所以我不能自己写特征名称!
我尝试了几件事:
{For 1 N 1
proc {$ I}
local
Label
Day="day"
in
...
% Label=Day+I
% cannot add a list and a number
% Label={List.append Day {Int.toString I}}
% creates the right string, but when trying to make the record: type error
% Label=dayI
% works but produces only "dayI" features, all the same
% Label=day + I
% cannot add a feature and a number
...
end
end
}
然后将所有标签处理在一个列表中,以便使用Record.makeTuple
。
有没有什么方法可以创建或操纵动态特征?
现在,我发现的唯一选择是使用字符串,而不是作为一个特征,而是使用一对:
record("day1"#[..] "day2"#[..] ...)
但这不是我想要的。
感谢您的回答或帮助。
记录的特征是原子。要将字符串转换为原子,请使用 String.toAtom
。例如:
declare
L = {String.toAtom "dynamic string"}
R = {MakeRecord record [L]}
{Show R}
但是,如果我没记错的话,有一个警告:原子不会被垃圾收集。如果您创建了很多不同的原子,您可能 运行 会出现内存问题。