하여 사전의 유형은 무엇입니까?
는 다음 시도 제안 당신의 코드로 IDictionary
제네릭이 아닌 경우 다음 (당신은 당신이 쉽게 작업 할 수있는 입력 집합을 얻을 수 Seq.cast<>
를 추가해야하므로 F 번호에 for
는 암시 적으로 변환을 삽입하지 않습니다) :
for entry in dict do
// use 'entry.Value' and 'entry.Key' here
:
for entry in dict |> Seq.cast<DictionaryEntry> do
// use 'entry.Value' and 'entry.Key' here
당신이 라이브러리에 대한 제어가있는 경우 다음 (Seq.cast
에 대한 호출을 필요로하지 않는 일반 IDictionary<'K, 'V>
를 사용하는 경우, 이것은) 이전 옵션보다 낫다 0
불변의 F # Map<'K, 'V>
유형 (F #에 기능 코드를 작성하는 경우 사용할 수있는 최상의 유형)을 사용하는 경우 Pavel의 솔루션을 사용하거나 for
루프를 KeyValue
활성 패턴과 함께 사용할 수 있습니다 이 : 사례 모두에서
for KeyValue(k, v) in dict do
// 'k' is the key, 'v' is the value
, 당신은 하나 for
또는 다양한 iter
기능을 사용할 수 있습니다. 부작용이있는 무언가를 수행 할 필요가 있다면 for
루프를 선호 할 것입니다. (그리고 이것은 제가 언급 한 첫 번째 대답이 아닙니다 :-)) 이것은이 목적으로 설계된 언어 구조이기 때문입니다. 함수 처리를 위해서는 Seq.filter
등의 다양한 함수를 사용할 수 있습니다.
호기심 - 궁금한 점은 printfn이 아니라 문자열 끝에 \ n이있는 printf가 필요한 이유일까요? –
'printfn'을 볼 때마다 반대 질문을합니다. 이유는 없지만 물론 개인적인 취향입니다. –