|
|
1
6
在编写C#时,如果需要一个可以接受多个不同参数集的函数,只需创建方法重载:
当您编写F#时,需要一个可以接受多个不同参数集的函数时,您可以创建一个可以包含所有不同参数集的区分并集,并创建一个接受该并集的函数:
作为一个单一的功能,
那么F#如何实现
签字人
以及
当然你也可以实现同样的功能
|
|
|
2
11
这个问题有点模棱两可,所以我就漫谈一下F的真实性。
在F#,
方法
在F#中,let绑定函数值不能重载。所以:
这意味着你永远不能有一个“不合格”的标识符
最后,这个疯狂的案例可能就是引发这个问题的原因。F#可以定义
所以这些都是由编译器处理的,在我们需要生成代码时,我们再次静态地解析了我们在这个调用站点使用的特定类型。“类型”的
(疯狂的东西的主要目的/理由是为了重载的数学运算符。没有
|
|
|
3
4
假设我理解这个问题,在F#中,您可以根据具有特定签名的成员的可用性来定义表达式。例如
这是一个传球的例子
这将运行该方法
编辑 考虑到这个问题的来龙去脉( C# - How can I âoverloadâ a delegate? ),我似乎根本没有回答你真正的问题。相反,盖布似乎在谈论的是一个人可以很容易地定义和使用歧视工会。所以在另一个线程上提出的问题可以用F#这样回答:
在低水平上,这里没有CIL魔法;只是
此外,这里没有函数的特殊性;F#判别并集使定义具有固定数量的命名替代项的类型变得很容易,每个替代项都可以包含您想要的任何类型的数据。 |
|
|
4
1
我不太确定你是否正确理解了你的问题。。。F#编译器使用 FSharpFunc 因此,F#不使用委托,而是使用带有具体或泛型参数的特殊类型。 如果你的问题是关于 添加一些我不知道确切是什么但是它有加法运算符 那你需要用 内联 关键字和编译器将在调用位置发出函数体。@kvb的回答正好描述了这个案例。 |