Function 我的代码中的数组映射问题
我是一名F#新手,在编写代码时遇到问题,出于某种原因,行分割无法工作,Map.OfArray调用只返回空数组 代码如下: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 [|
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))
,这取决于钥匙的意义。元组的第一个元素用作键,第二个元素用作值。