1

以下に、問題を引き起こす私の F# プログラムの一部を掲載します。

...
match words with
        | name :: "of" :: context :: "=" :: value :: _ when Double.TryParse(value) |> fst ->
            let var = new FuzzyVariable(name, context, Double.Parse value)
            fuzzyVars <- var :: fuzzyVars

列をなして:

fuzzyVars <- var :: fuzzyVars

「Type unit に適切な値として null がありません」というエラーが表示されます。私は F# プログラミングにかなり慣れていないため、この問題の原因がよくわかりません。

fuzzyVars は FuzzyVariable リスト型です。FuzzyVariable はカスタム定義型です。

編集。

@Tomas Petricek が指摘したように、私のコードには null を返す行がありました。

| [] -> null

私の意図は、試合の価値を無視することでした。それを行う適切な方法は次のとおりです。

| [] -> ()

その後、すべてが正常に動作します。

4

2 に答える 2

1

私はこれを試してみましたが、うまくコンパイルされました:

open System
type test = {Name:string}
let mutable fuzzyVars : (test list) = []
match [null; "of"; "context"; "="; "5"] with
        | name :: "of" :: context :: "=" :: value :: _ when Double.TryParse(value) |> fst ->
            let var = {Name=name}
            fuzzyVars <- var :: fuzzyVars
        | a -> a |> ignore

問題はコードのこのセクションにはありません。

于 2013-04-30T00:00:52.743 に答える