変更可能なセットが必要なプログラムでの作業。閉鎖にセットを置くしようとすると、私はエラーを取得する:F#変更可能から参照への変更
let mutable donefiles : Set<FileRecord> = Set.empty
let filestodo = Set.difference parms.FileSpecs donefiles
let errorFile (file: FileRecord) =
donefiles <- Set.add file donefiles
Error 40 The mutable variable 'donefiles' is used in an invalid way. Mutable variables cannot be captured by closures. Consider eliminating this use of mutation or using a heap-allocated mutable reference cell via 'ref' and '!'.
は、参考文献に「donefiles」を変換しようとしますが、構文の権利を取得するように見えることはできません。最初に試した(私には)明らかに:
let donefiles : Set<FileRecord> = ref Set.empty
しかし:
Error 40 This expression was expected to have type Set but here has type 'a ref
私はこのケースでは、構文は何を使うべきですか?
:
が参照セルを変異させるために、'? –
Lee
:=
演算子を使用します変更可能な 'HashSetHashSetには差分機能がないようです。 – user1443098
'.ExceptWith'を使うと' HashSet 'からアイテムのコレクションを削除できます。 –
Lee