2017-12-17 7 views
0

값을 가져 와서 사전에서 값을 찾은 다음 삭제하고 사전을 통해 함수를 만드는 함수를 만들려고합니다. 그래서 (사전에있는 값의 키가 INT 1의 값과는) 같은 값의 키는 이후 한 이하 : 귀하의 예제에서 코드를 기반으로사전에서 항목을 삭제하고 다른 사람의 키를 변경하는 방법 F #

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 
+1

1) 사전으로 사용하는 데이터 구조는 무엇입니까? 2) 당신의 키가 인덱스 일 경우,'ResizeArray'를 사용하는 것이 훨씬 더 의미가 있습니다. –

+0

사전은 (Int, Gitem) –

+3

'System.Collections.Generic.Dictionary '입니까? 열쇠를 나타 내기 위해 열쇠가 무엇을 나타 냅니까? –

답변

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 

- 가능성을 재현하는 것이 더 효율적입니다 사전을 삭제하고 요소의 절반을 추가하는 것보다