前言:最近在了解F#,无意中看到一个日文的教程( http://techbank.jp/Community/blogs/gushwell/default.aspx ),觉得很不错,所以希望可以和大家一起分、学习。
 
学习数组、List和Tuple后,这回我们要学习Dictionary。
let dictionary = dict [ (1, "Up"); (2, "Down"); (3, "Left"); (4,"Right") ]
let v = dictionary.[1]
printfn "%A" v
printfn "%A" dictionary.[4]
for e in dictionary do
        printfn "%d %s" e.Key e.Value

dict不是关键字,而是标准库中定义的函数。选择第一行代码,通过Alt+Enter就可以看到如下显示:
val dictionary : System.Collections.Generic.IDictionary<int,string>

通过使用for语句,可以逐个取出各个要素。也可以使用Key, Value属性取出值。for可以取出的值的类型是.NET的KeyValuePair。 

此外我们还可以通过使用.NET Framework类的创建一个空的Dictionary:
let hist = new Dictionary<char,int>()

由于是.NET类,就可以照常使用它的方法了:
if hist.ContainsKey(c) then
或则
hist.Add(c,v+1)
这些都是OK的。但是如下代码会出现编译警报:
hist.Remove(c)

原因就是有返回值的方法需要得到处理。代码如下:
let _ = hist.Remove(c)

是不是有点严格啊?如果想忽略掉就可以和上述代码一样使用_。

当然也可以像如下一样写代码:
for KeyValue(k,v) in dictionary do
        printfn "Key=%d Value=%s" k v