1
41
埃里克·利珀特就这个问题写了一篇博文。 总的来说,主要问题是需要对C编译器进行重大的重新架构。声明当前以单传递方式处理。这需要多次通过,因为能够在推断变量之间形成循环。vb.net有大致相同的问题。 |
2
7
贾里德的答案与一个奇妙的话题有着奇妙的联系。 我认为它没有明确回答这个问题。 为什么不呢?
原因是: 如果…怎么办?
你可以推断出
在纯粹的美学层面上,我发现方法的var定义混淆了事物。这是我认为明确的地方 总是 有帮助的是,它通过意外返回一个导致签名和大量其他依赖方法签名更改的类型来保护您不被射到脚上。最糟糕的是,如果您返回返回对象的方法的值,并且碰巧幸运的话,您可能会在不知道自己做了什么的情况下更改方法链的所有签名。 我认为var方法最好留给像ruby这样的动态语言使用。 |
3
1
因为这样做容易多了。如果你要推理所有类型,你需要一个类似辛德利·米尔纳类型推理系统的东西,它将使你心爱的C成为哈斯克尔派生语言。 |
4
1
本质上,您遇到的问题是C(迄今为止)是一种静态类型语言。定义为var的局部变量仍然是静态类型,但在语法上是隐藏的。另一方面,返回var的方法具有许多含义。它变得更像是一个可供使用的接口,并且您不会通过使用var获得任何东西。 |
5
1
您可以在vs 2010中使用 动态的
|
6
0
我认为这是因为隐式类型的范围要比单个方法的范围宽得多,因此更容易引起问题。 |
danny · 如何使数组或映射返回变量(而不是其值) 1 年前 |
Sher Meen · 我需要列出一个循环中临时变量中存储的多个值 2 年前 |
Noah Hellyer · 如何删除python中7个字符长的所有零 2 年前 |
Gabbisen · 从列表编辑变量(不能使用字典) 2 年前 |
cred · 为什么我请求的变量在从另一个类调用时显示为0.0? 2 年前 |
lorny · R循环中的自动递增变量名 6 年前 |