在Scala或Groovy中代表C#

时间:2014-01-07 18:54:24

标签: c# scala groovy delegates

我很想知道

  • 委托是否存在于Scala或Groovy中,如果不是C#语言?

如果你的答案是否定的,请解释

  • 为什么像Groovy,Scala等现代语言不支持 它喜欢C#?

为什么微软已接受它,但其他人不接受?所以不应该有用吗?

由于

1 个答案:

答案 0 :(得分:4)

什么是C#代理?来自MSDN Tutorial: C#中的委托类似于C或C ++中的函数指针。使用委托允许程序员将对方法的引用封装在委托对象中。

.CLR对一流功能的历史支持。即能够像其他任何值一样使用函数传递。来自.NET 3.5 Func<>为此目的添加到C#中。

Java可以通过匿名内部类来模拟这个。 Scala具有几乎优秀的一流功能支持:

val f = (x:Int) => x + 1

Groovy具有一流的功能:

square = { it * it }

为了公平起见,CLR委托的工作速度比上面列出的JVM方法要快一些。 这是因为JVM本身缺乏对第一类函数的支持,将它们带回来的唯一方法是模拟这个功能。

  

为什么微软已接受它,但其他人不接受?

这就是历史上展开的事情。

  

所以不应该有用吗?

第一类函数在functional programming中非常有用。