我是一个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
}
这是我的获取命令:
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()))
}
答案 0 :(得分:2)
您需要从内部序列理解中获得匹配的值。目前还不清楚键和值的格式应该是什么,但你可以这样做:
return
[|
for row in csv.Split([|'\n'|], StringSplitOptions.RemoveEmptyEntries) do
match row.Split([|','|]) with
| [|d; p; v |]-> yield (d, p)
| _ -> yield! [||]
|] |> Map.ofArray