【发布时间】:2010-04-14 05:03:43
【问题描述】:
好吧,这将是我第三次打死马了。
但是,这个问题与我之前关于闭包/代表的两个问题不同,后者询问代表的计划以及闭包的预计规范和实施。
这个问题是关于 - 为什么 Java 社区在努力定义 3 种不同类型的闭包时,我们可以简单地从我们心爱的友好邻居微软那里窃取委托锁、股票和桶的整个概念。
有两个非技术性的结论我很想跳入:
- Java 社区应该保持其自豪感,但需要付出复杂的努力,不要屈服于借用任何 Microsoft 概念或以其他方式证明 Microsoft 的才华。
- Delegates 是 Microsoft 的专利技术。
好吧,除了以上两种可能,
第一季度。三种(或更多)形式的闭包要解决的 .NET 风格的委托是否存在任何弱点或不足之处?
第二季度。我在 Java 和 C# 之间切换时问这个问题,这让我很感兴趣,C# 委托完全符合我的需要。是否有将在 C# 委托中当前不可用的闭包中实现的功能?如果是这样,它们是什么,因为我看不到我需要的东西比 C# 代表充分提供给我的东西更多?
第三季度。我知道在 java 中实现闭包/委托的一个问题是减少语言的正交性,其中有不止一种方法可以执行特定任务。为了确保 java 保持其正交性级别,是否值得花费级别卷积和时间来避免委托?在关系设计中,我们知道通过经常仅充分满足第二范式来打破正交性是可取的。为什么java不能为了简单而减少正交性和OO-ness?
第四季度。 JVM 的体系结构在技术上受限于实现 .NET 风格的委托。如果这个原因(强调可能性的虚拟语气)是真的,那么为什么不能将三个闭包提案隐藏在一个简单的委托关键字或注释后面:如果我们不喜欢使用@delegate,我们可以使用@method。我看不出委托语句格式比三个闭包提案更复杂。
【问题讨论】:
-
关于你的第二个非技术理论,我很确定专利不是问题。
-
感谢 itowlson 通过编辑我的懒惰来补充。对不起。
-
你应该给出一些你喜欢的系统的语法例子。
标签: c# java .net delegates closures