我正在写一个快速数据库性能测试,并选择了F#以便我可以获得更多练习。将2个序列应用Seq.map到一个需要2个参数的方法
我已经创建了一个方法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
。我想部分地将ids
应用于它,如下所示:ids |> Seq.map measureSelectTimes
但后来我不知道如何处理所产生的部分应用函数,然后映射到cmds
。这是什么语法?
顺便说一句,你可以写你的lambda作为'(乐趣(ID,CMD) - > measureSelectTimes ID CMD)'。 (这与问题无关) – Dmitry 2011-05-25 18:51:06
@Dmitry - 谢谢,好东西。这就是为什么我发布这个问题,我需要扩展我的F#词汇。 – codekaizen 2011-05-25 19:31:20