![]() |
1
5
让我稍微澄清一下你的问题。
对。 您应该阅读规范以了解确切的细节,但要简短地:
这些规则是由十几个人在一个房间里坐了很多年后得出的。方法在C#1中添加组到委托的转换,在C#2中添加泛型委托,在C#3中添加lambdas,在C#4中添加泛型委托方差。我不知道如何回答一个“为什么”的问题,这个问题实际上已经完成了数百个小时的设计工作,其中一半以上是在我加入设计团队之前完成的。这其中包含了很多的争论和妥协。 请不要问关于编程语言设计的模糊的“为什么”和“为什么不”的问题 像“规范的哪一页定义了这种行为?”有一个答案,但“为什么规范会这么说?”基本上是要求对15年前做过这项设计工作的人进行心理分析,为什么他们发现某些妥协很有说服力,而其他的则没有那么多。我没有能力也不愿意做这样的分析;这需要重新思考几百个小时的争论。 昨天 除了决定精确或不精确的匹配何时重要,以及它们有多重要 . 问一个更具体的问题 . 告诉你,让我们 你 代替我做那项工作。以下是您的一个场景:
请向我描述一下禁止用户编写那行代码的显著好处。 例:在我看来,它确实像个虫子。看起来用户开始输入一个东西,中途改变了主意。这种毫无意义、奇怪的不一致性是草率的、有缺陷的代码的高度特征,而且可以很容易地防止。 . 这看起来确实是个错误。 现在提出一个反论点,即代码应该被允许 现在,提出更多关于每种选择的细微利弊的论据,以及不同的开发人员场景如何影响您对每个选择的分析。给出很多,很多实际代码的例子。 请记住,有些用户是类型系统的专家,有些则不是。有些是有20年经验的建筑师,有些是刚从大学毕业的。有些人是Java程序员,他们昨天刚学了C,但仍处于擦除的心态;有些人是F程序员,他们习惯于完整的程序推理。 对每种方案的优缺点做详细的说明,然后提出一个折衷方案,在任何重要的方案上都不过分妥协。 现在考虑一下成本 . 提议的特性是否难以实现?它是否添加了新的错误消息?信息是清晰的,还是会迷惑用户?提议的功能是否可能阻止未来的功能?我注意到你必须 好的 预测语言的未来来做这一步。 一旦你做出决定,那么 用一句话来描述所有这些工作,并回答“你为什么决定这样做?” |
![]() |
holbech · Scala:隐式分解、歧义和逆变 7 年前 |
![]() |
Zebrafish · 没有隐式向上转换函数指针参数? 8 年前 |
![]() |
Zac · 协方差混乱。无法将已实现接口的元组分配给元组列表 8 年前 |
![]() |
lokusking · 任务的协方差和反方差 9 年前 |
![]() |
Aadith Ramia · 理解C中的反差# 9 年前 |