【发布时间】:2018-05-17 14:50:12
【问题描述】:
我试图调整一个 WikiBooks 示例以接受 csv 输入和类型,但在将传入的类型列表转换为字典并匹配用户输入方面遇到了困难。
// https://en.wikibooks.org/wiki/F_Sharp_Programming/Sets_and_Maps#Examples_2
module SOQN =
open System
open FSharp.Data
type Country = Country of string
type City = City of string
type CountryCapital = {
Country:Country
City:City
}
let [<Literal>] sampleCsv = @"D:\Country_Capitals.csv"
type Capitals = CsvProvider<sampleCsv, Separators=",", HasHeaders=true>
let readFromCsvFile (fileName:string) =
let data = Capitals.Load(fileName)
[ for row in data.Rows do
yield { Country = Country row.Country; City = City row.City; } ]
let countryCapitals =
readFromCsvFile sampleCsv
// -> |> Map.ofList
Console.Write("Find capital by country (type 'q' to quit): ")
match Console.ReadLine() with
| "q" -> Console.WriteLine("Bye!")
| country ->
match countryCapitals with
// -> | { Country = country } -> Console.WriteLine("Capital of {0} is {1}\n", country, capital)
| _ -> Console.WriteLine("Country not found.\n")
// Expected Output: Find capital by country (type 'q' to quit): Egypt
// Capital of Egypt is Cairo
我错过了什么?
【问题讨论】:
标签: dictionary types f# pattern-matching