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 回答