我正在编写一个快速的 DB 性能测试,并选择了 F#,这样我可以得到更多的练习。
我创建了一个方法,measureSelectTimes
它具有签名Guid list * Guid list -> IDbCommand -> TimeSpan * TimeSpan
。
然后,我称之为:
let runTests () =
let sqlCeConn : IDbConnection = initSqlCe() :> IDbConnection
let sqlServerConn : IDbConnection = initSqlServer() :> IDbConnection
let dbsToTest = [ sqlCeConn; sqlServerConn ]
let cmds : seq<IDbCommand> = dbsToTest |> Seq.map initSchema
let ids : seq<Guid list * Guid list> = cmds |> Seq.map loadData
let input = Seq.zip ids cmds
let results = input |> Seq.map (fun i -> measureSelectTimes (fst i) (snd i))
// ...
我已经用类型明确地注释了以澄清。
我想不通的是如何在measureSelectTimes
没有 lambda 的情况下调用。我想像这样部分应用ids
它:ids |> Seq.map measureSelectTimes
但是我不知道如何处理生成的部分应用函数然后映射到cmds
. 这个的语法是什么?