我希望创建一个函数,它接受一个值,在字典中找到值,然后将其删除,同时还要通过字典并使值的键值减少一个,就像这样(字典中值的键是从1开始的int值):
let deleteitem (item: Gitem) =
let mutable count = 1
while count<=invendict.Count do
let testitem = invendict.Item[count]
if item = testitem then
invendict.Remove[count]
//from here, look at every value, whos key is higher than the key of
the removed value, and decreases the key by one, till every value is looked at
答案 0 :(得分:3)
根据示例中的代码片段,字典中的键只是字典中的索引(因为代码示例中的循环从1
迭代到invendict.Count
)。在这种情况下,使用字典是一个坏主意。您可以使用ResizeArray
(这是.NET通用可变List<T>
类型的F#类型别名。)
从ResizeArray
删除项目完全符合您的需要:
let r = ResizeArray ["A";"B";"C"]
r.RemoveAt(1) // Remove the B element
r.[0] // Returns A as before removal
r.[1] // Returns C which was at 2 before the removal
如果你真的想使用字典,那么你基本上需要创建一个新字典 - 重新创建字典可能比删除和添加一半字符更有效。