F#:将元组转换为哈希表
F#: Converting tuples into a hashtable
我是编程新手,这是我第一次使用类型化、函数式和 .NET 语言,如果我的问题是 silly/trivial,请原谅我。
我有一个元组列表,我想将每个元组的第一项(它是一个字符串)存储为哈希表中的一个值,以及每个元组的第二项(它是一个字节数组)元组作为键。我该怎么做?
这是我的代码:
let readAllBytes (tupleOfFileLengthsAndFiles) =
let hashtable = new Hashtable()
tupleOfFileLengthsAndFiles
|> snd
|> List.map (fun eachFile -> (eachFile, File.ReadAllBytes eachFile))
|> hashtable.Add(snd eachTuple, fst eachTuple)
但是,最后一行用红色下划线标出。我该如何改进它?在此先感谢您的帮助。
最简单的方法是使用 dict
它将字典中的元组序列转换为字符串类型的哈希表。
> dict [(1,"one"); (2,"two"); ] ;;
val it : System.Collections.Generic.IDictionary<int,string> =
seq [[1, one] {Key = 1;
Value = "one";}; [2, two] {Key = 2;
Value = "two";}]
如果您真的对哈希表感兴趣,可以使用这个简单的函数:
let convert x =
let d = Hashtable()
x |> Seq.iter d.Add
d
所以,我不确定你想用这个做什么,看来你也有兴趣在转换过程中读取文件。可能是这样的:
let readAllBytes (tupleOfFileLengthsAndFiles:seq<'a*'b>) =
tupleOfFileLengthsAndFiles
|> Seq.map (fun (x, y) -> x, File.ReadAllBytes y)
|> convert
我是编程新手,这是我第一次使用类型化、函数式和 .NET 语言,如果我的问题是 silly/trivial,请原谅我。
我有一个元组列表,我想将每个元组的第一项(它是一个字符串)存储为哈希表中的一个值,以及每个元组的第二项(它是一个字节数组)元组作为键。我该怎么做?
这是我的代码:
let readAllBytes (tupleOfFileLengthsAndFiles) =
let hashtable = new Hashtable()
tupleOfFileLengthsAndFiles
|> snd
|> List.map (fun eachFile -> (eachFile, File.ReadAllBytes eachFile))
|> hashtable.Add(snd eachTuple, fst eachTuple)
但是,最后一行用红色下划线标出。我该如何改进它?在此先感谢您的帮助。
最简单的方法是使用 dict
它将字典中的元组序列转换为字符串类型的哈希表。
> dict [(1,"one"); (2,"two"); ] ;;
val it : System.Collections.Generic.IDictionary<int,string> =
seq [[1, one] {Key = 1;
Value = "one";}; [2, two] {Key = 2;
Value = "two";}]
如果您真的对哈希表感兴趣,可以使用这个简单的函数:
let convert x =
let d = Hashtable()
x |> Seq.iter d.Add
d
所以,我不确定你想用这个做什么,看来你也有兴趣在转换过程中读取文件。可能是这样的:
let readAllBytes (tupleOfFileLengthsAndFiles:seq<'a*'b>) =
tupleOfFileLengthsAndFiles
|> Seq.map (fun (x, y) -> x, File.ReadAllBytes y)
|> convert