2014-10-02 77 views
0

我遇到了F#CSV類型提供程序的問題並且類型不匹配。我是F#的新手,所以很可能是一個基本問題。我已將文件放在blob存儲上,以便您可以更輕鬆地進行復制。 https://analyzethis.blob.core.windows.net/voterinfo/WakeCountyVoterCSV 注意:您需要將供應商文件位置更改爲您的下載位置才能完全複製。您也許能夠從blob動態加載。F#CSV提供程序類型不匹配

我得到的錯誤是:

類型不匹配:期待一個序列< CsvProvider < ...>行> - > INT

但給予

序列< CsvProvider < .. >行> - >單元

類型int不匹配單元

code:

open FSharp.Data 
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv", AssumeMissingValues=true, MissingValues=""> 

[<EntryPoint>] 
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv") 
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r) 

任何幫助,非常感謝!

感謝,

〜大衛

+0

這可能是一個dupe的https://stackoverflow.com/questions/26080292/type-mismatch-works-in-f-interactive-but-not-in-a-real-f-project/26080298#26080298 – 2014-10-02 21:44:36

回答

2

main爲int的預期收益類型,從而在main功能時,您的代碼最後一行必須是int表達式

open FSharp.Data 
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv", AssumeMissingValues=true, MissingValues=""> 

[<EntryPoint>] 
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv") 
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r) 
    0 // <--- Add an int as the return value 
+0

所以我繼續前進,並添加0和下面的readline,但它不是打印有關行的信息。把它放在交互中產生輸出: val it:unit =() – 2014-10-02 20:13:58

+0

我剛剛意識到.Parse()用於解析傳入的字符串csv。負載應該用於文件和uri的。不幸的是,當試圖使用.Load時,它告訴我只支持Web地址。 – 2014-10-02 20:43:35

+0

看看http://stackoverflow.com/questions/25449774/fsharp-data-csv-load-failed-with-only-web-locations-are-supported,因爲我認爲它可能是相關的? – Steve 2014-10-02 21:12:17

相關問題