我正在尝试重构Mosel中的一些代码,并使用记录集来表示稀疏多维数组的索引。我希望能够动态填充我的记录集,因此我无法使用文件或数据库中的初始化内容。
我有:
declarations
myTuple = record
index1 : string
index2 : string
end-record
sparseIndex : set of myTuple
end-declarations
然后我想做类似的事情:
forall (a in largeListOfStrings)
forall (b in anotherListOfStrings)
if (someCondition(a,b)) then
sparseIndex += { new myTuple(a, b) }
但是在Mosel中没有“new”关键字或运算符,文档在这一点上看起来很弱,所以我只是不知道如何创建我的记录的新实例并初始化它以便我可以将它添加到我的动态集。
或者,我可能只是想错误的方法 - 是否有更好的方法来创建一个保留对稀疏索引组件的访问权限的稀疏索引集。
答案 0 :(得分:1)
您无需为此案例定义记录。 Mosel非常适合保存稀疏数组的信息。你应该做点什么:
declarations
largeListOfStrings, anotherListOfStrings: set of string
mylist: dynamic array(largeListOfStrings, anotherListOfStrings) of integer
end-declarations
forall(a in largeListOfStrings, b in anotherListOfStrings | someCondition(a,b) = true) do
mylist(a, b) := 1
end-do
因此,从现在开始,您的稀疏矩阵将保留在我的列表中。每当你想要遍历它时,你应该使用如下逻辑:
forall(a in largeListOfStrings, b in anotherListOfStrings | exists(mylist(a,b))) do
! Here you will iterate
end-do