不知道其他30篇文章是如何在这里帮助我的,但是我正在使用c#dll来处理这些重载:
function TqlForBidAskTrade(string, int?, params string[])
function TqlForBidAskTrade(string[], int?, params string[])
我可以在c#中使用我想要的参数调用此方法,如下所示:
TqlForBidAskTrade("string", null)
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"])
看起来好像我应该偶然发现所有相似的请求,但我一直在寻找一个小时。
答案 0 :(得分:5)
和......面掌 TqlForBidAskTrade(“string”,Nullable())确实有效,在我的随机代码修补中,我搞砸了语法。
答案 1 :(得分:5)
您找到了解决方案,但添加了一些解释:
C#编译器特别对待Nullable<T>
。一个例子是null
可以替代new Nullable<T>()
。这是another example。
在F#中,Nullable<'T>
只是另一种类型:没有糖,没有魔力。 option<'T>
与Nullable
对象最接近,用于optional parameters。如果在F#中定义,您的函数可能如下所示:
type T =
static member TqlForBidAskTrade(s:string, ?n:int, ?args:string[]) = ()
T.TqlForBidAskTrade("foo")