我正在尝试执行功能流水线操作,但我不能让它适用于多个函数参数,其中一个参数是通用列表。
let function1(list:System.Collections.Generic.List<Person>, x:int) =
// does stuff returns a new list but for demo purposes I will just return list passed in
list
let function2(list:System.Collections.Generic.List<Person>, x:int) =
// does stuff returns a new list but for demo purposes I will just return list passed in
list
然后我尝试创建一个流水线函数,但是通过执行以下操作它不起作用:
myPipelinedFunction initialPersonList = function1 10 |> function2 300
编译器抱怨&#34;表达式应该具有类型&#39; a * int但是这里的类型为int&#34;
我做错了什么明显的? 任何帮助都非常感谢...
答案 0 :(得分:3)
如果你想使用流水线技术,你需要编写你的功能:
例如:
let function1 (x:int) (list:System.Collections.Generic.List<Person>) =
// does stuff returns a new list but for demo
// purposes I will just return list passed in
list
let function2 (x:int) (list:System.Collections.Generic.List<Person>) =
// does stuff returns a new list but for demo
// purposes I will just return list passed in
list
作为旁注,我不会在流水线操作中使用.NET泛型List<T>
,因为它是一个可变数据结构 - 因此您可能会遇到令人困惑的行为。不可变的F#列表或seq<T>
是更好的选择。