Function 我的代码中的数组映射问题

Function 我的代码中的数组映射问题,function,f#,Function,F#,我是一名F#新手,在编写代码时遇到问题,出于某种原因,行分割无法工作,Map.OfArray调用只返回空数组 代码如下: let loaddata() = async { let! csv = sprintf "http://api.bitcoincharts.com/v1/trades.csv?symbol=bitstampUSD" |> fetch return [|

我是一名F#新手,在编写代码时遇到问题,出于某种原因,行分割无法工作,Map.OfArray调用只返回空数组

代码如下:

let loaddata() =
       async {
            let! csv = sprintf "http://api.bitcoincharts.com/v1/trades.csv?symbol=bitstampUSD" |> fetch
            return
                [|
                    for row in csv.Split([|'\n'|], StringSplitOptions.RemoveEmptyEntries) do
                        match row.Split([|','|]) with
                        | [|d; p; v |]-> ()
                        | _ -> ()
                |] |> Map.ofArray
            }
这是我的fetch命令:

let fetch (url:string) =
    async {
            let wp = new WebProxy()
            let request = System.Net.WebRequest.Create(url)
            let! resp = request.AsyncGetResponse()
            let ms= new MemoryStream()
            resp.GetResponseStream().CopyTo(ms)
            return (System.Text.Encoding.UTF8.GetString(ms.ToArray()))
          }

您需要从内部序列理解中生成匹配的值。不清楚键和值的格式应该是什么,但您可以执行以下操作:

return
    [|
        for row in csv.Split([|'\n'|], StringSplitOptions.RemoveEmptyEntries) do
            match row.Split([|','|]) with
            | [|d; p; v |]-> yield (d, p)
            | _ -> yield! [||]
    |] |> Map.ofArray

请注意,您不必在所有代码路径中都生成某些内容<代码>()不需要替换为
yield![| |]
,因为两者本质上都是不可操作的。我如何也返回v?@user3623025-您必须生成一对,因此这取决于您希望映射中的键和值是什么样的。根据@Lee的评论:如果您希望所有自由值都进入映射,您将返回类似于
((d,p),v)
(d,(p,v))
,这取决于钥匙的意义。元组的第一个元素用作键,第二个元素用作值。