不知道其他30篇文章是如何在这里帮助我的,但我正在使用这些重载的ac#dll:
function TqlForBidAskTrade(string, int?, params string[])
function TqlForBidAskTrade(string[], int?, params string[])
Run Code Online (Sandbox Code Playgroud)
我可以用c#中的params调用这个方法,如下所示:
TqlForBidAskTrade("string", null)
Run Code Online (Sandbox Code Playgroud)
F#中的等价物是什么?我似乎无法得到任何东西来编译.我试过了:
TqlForBidAskTrade("string", null)
TqlForBidAskTrade("string", Nullable<int>())
TqlForBidAskTrade("string", Nullable<int>(), null)
TqlForBidAskTrade("string", Nullable<int>(), [])
TqlForBidAskTrade("string", Nullable<int>(), ["doodah"])
TqlForBidAskTrade("string", 4, ["doodah"])
Run Code Online (Sandbox Code Playgroud)
看起来好像我应该偶然发现所有相似的请求,但我一直在寻找一个小时.
和...面掌.
TqlForBidAskTrade("string",Nullable())确实有效,在我的随机代码修补中,我搞砸了语法.
您找到了解决方案,但添加了一些解释:
C#编译器Nullable<T>专门处理.null可以用一个例子代替new Nullable<T>().这是另一个例子.
在F#中,Nullable<'T>只是另一种类型:没有糖,没有魔力.option<'T>是最接近Nullable对应物的东西,用于可选参数.如果在F#中定义,您的函数可能如下所示:
type T =
static member TqlForBidAskTrade(s:string, ?n:int, ?args:string[]) = ()
T.TqlForBidAskTrade("foo")
Run Code Online (Sandbox Code Playgroud)