2

以下のコードで「Block following let is unfinished. 式が必要ですか? x の値は文字列リストであると想定されており、F# ではそのように認識されます。では、なぜ x は後で関数で使用する文字列リストにならないのでしょうか?

let fxProper (str : string) (values : obj[,]) =
    let x = 
        values
        |> Seq.cast<obj> 
        |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
        |> Seq.map string 
        |> Seq.toList
4

2 に答える 2

4

設定したx値で何かをする必要があります

let fxProper (str : string) (values : obj[,]) =
    let x = 
        values
        |> Seq.cast<obj> 
        |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
        |> Seq.map string 
        |> Seq.toList
    x

動作するはずです。

これ

  let fxProper (str : string) (values : obj[,]) =
            values
            |> Seq.cast<obj> 
            |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
            |> Seq.map string 
            |> Seq.toList

同様に動作するはずです。

于 2013-07-19T21:34:05.437 に答える
1

あなたはそれを正しくやっています。の let バインディングxは適切に機能しています。エラーは、関数fxProperが現在何も返していないことを示しています。x を返すことを意図している場合は、以下のように最後に追加する必要がありfxProperます。それ以外の場合は、関数の記述が完了するまで、ダミーの戻り値を追加するだけです。

let fxProper (str : string) (values : obj[,]) =
    let x = 
        values
        |> Seq.cast<obj> 
        |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
        |> Seq.map string 
        |> Seq.toList
    x //this returns the value of x from fxProper, this could also just the default value of whatever you actually want to return here
于 2013-07-19T22:11:01.827 に答える