如何 select 方法的特定重载?
How to select a specific overload of a method?
我正在调用使用重载和可选参数的 C# API。
不幸的是,其中一个重载是 params object[]
并且 F# select 是我打算调用的更具体的重载。如何使 F# select 成为我想要的重载?
Here's a small repro. And here is a link to the actual API.
open System
open System.Linq.Expressions
type S =
static member Foo(expression: Expression<Func<int>>, ?gg: string) =
"expression"
static member Foo([<ParamArray>] args: obj[]) =
"params array"
[<EntryPoint>]
let main argv =
// This prints "params array", but I want it to print "expression"
let result = S.Foo(fun () -> 3, "")
printfn "%s" result
0
要调用带有两个参数的表达式版本,您需要:
let result = S.Foo((fun () -> 3), "")
在您的代码中,您实际上定义了一个 returns 一个 (3, "")
元组的函数,它只有一个参数。
我正在调用使用重载和可选参数的 C# API。
不幸的是,其中一个重载是 params object[]
并且 F# select 是我打算调用的更具体的重载。如何使 F# select 成为我想要的重载?
Here's a small repro. And here is a link to the actual API.
open System
open System.Linq.Expressions
type S =
static member Foo(expression: Expression<Func<int>>, ?gg: string) =
"expression"
static member Foo([<ParamArray>] args: obj[]) =
"params array"
[<EntryPoint>]
let main argv =
// This prints "params array", but I want it to print "expression"
let result = S.Foo(fun () -> 3, "")
printfn "%s" result
0
要调用带有两个参数的表达式版本,您需要:
let result = S.Foo((fun () -> 3), "")
在您的代码中,您实际上定义了一个 returns 一个 (3, "")
元组的函数,它只有一个参数。