Why does...
type IntDelegate = delegate of int -> unit
type ListHelper =
static member ApplyDelegate (l : int list) (d : IntDelegate) =
l |> List.iter (fun x -> d.Invoke x)
ListHelper.ApplyDelegate [1..10] (fun x -> printfn "%d" x)
当代码无法编译时:
type IntDelegate = delegate of int -> unit
type ListHelper =
static member ApplyDelegate (l : int list, d : IntDelegate) =
l |> List.iter (fun x -> d.Invoke x)
ListHelper.ApplyDelegate ([1..10], (fun x -> printfn "%d" x))
这是什么?
唯一的区别在于第二个函数中,ApplyDelegate
以元组形式接受其参数。
此函数参数过多,或在不期望函数的上下文中使用。
let f x = ...
或fun
定义的,并且相对非常严格(例如,您不能重载函数,但可以重载成员)。成员应该始终采用元组参数;与函数不同,成员更像.NET实体,而函数更具F#特定性。 - Brian