F#:使用List.map调用seq方法中的方法

Pro*_*ool 2 generics f#

基本上我有一个方法列表,我想迭代,调用方法,并返回方法返回值列表.我可以使用Linq语法.

member public x.TakeIn(methodList : seq<(String -> Int32)>, input:String) =
    methodList.Select((fun (item:String -> Int32) -> item(input))).ToList()
Run Code Online (Sandbox Code Playgroud)

但是,我不能得到地图太工作,我猜测是我缺乏F#语法知识.

member public x.TakeIn(methodList : seq<(String -> Int32)>, input:String) =
    methodList |> List.map (fun (item) -> item(input))
Run Code Online (Sandbox Code Playgroud)

不应该这意味着map方法将接受seq <(String - > Int32)>,迭代,调用每个方法,并返回Int32列表?

pad*_*pad 5

因为methodList是F#中的序列,所以不能将其视为列表(它是其子类型之一).因此,请确保对序列使用高阶函数并将结果转换为列表:

member public x.TakeIn(methodList : seq<(String -> Int32)>, input:String) =
    methodList |> Seq.map (fun (item) -> item(input)) |> Seq.toList
Run Code Online (Sandbox Code Playgroud)