![]() |
1
6
当我开始使用类型推断时,我失去了使用动态类型的愿望。 |
![]() |
2
6
C已经扩展到包括动态类型的某些方面,是的,但这并不意味着静态类型已经死了。这仅仅意味着C已经添加了一些工具,允许各种说服的开发人员以多种不同的方式解决各种问题。 我对一种类型的系统比另一种更好的概念有一个问题。这就像是说锤子比螺丝刀好。如果不知道手头任务的背景,就不可能做出这样的决定!动态类型优于静态类型 对于某些问题和情况 反之亦然。这种方法的优越性完全取决于手头的问题。 因此,为了坚持我的工具类比,最好有一个工具箱,其中包含锤子和螺丝刀,并知道如何有效地使用每一个。这将使您成为一个更好的开发人员,因为您将最有能力解决您面临的任何问题。C的新的动态类型添加只是为了帮助您在一个简单、方便的包中提供这些工具。 |
![]() |
3
2
有一段时间,语言已经越来越多地进入“可能的话静态类型化,必要时动态类型化”的领域。与 structural typing (静态检查duck类型)开始进入主流语言,我们可能会看到语言发展到基本上静态检查python的程度。 为了它的价值, dynamically typed code is just as mindful of types as statically typed code . 惯用的C仍然是静态类型的,并且在未来很长一段时间内保持这种状态。 |
![]() |
4
1
据我所知,动态关键字的引入更多地是为了便于在运行时对未知类型进行互操作和方法调用,而不是像Python这样的语言中的动态类型。 本质上,如果您以前必须调用InvokeMember才能对未知类型调用方法,那么您将创建一个动态对象,并只调用该方法,该方法将在运行时解析。代码变得非常容易阅读。为什么要对未知类型调用方法(或访问属性)?当你使用数据绑定的时候,wpf会一直这样做。 如果希望使用弱绑定(例如,如果希望编写使用Office Interop的代码,但希望支持多个版本的Office),则也可以使用它。我以前必须这样做,它的代码是可怕的。动态关键字将使此类代码更易于阅读和理解。 有关详细信息,请参阅本文: |
![]() |
5
1
据我所知,类型错误大约占所有发现错误的5-10%,因此对于静态类型为免费的语言,我们的错误更少。对于静态类型,单元测试和回归测试也要小一些。 动态类型对于OO语言来说很好。对于FP语言(尤其是HM类型系统),动态类型和静态类型不会影响程序设计的总体决策。 但是,有时您需要良好的代码性能,而这一时刻将向您展示动态类型的阴暗面。 |
![]() |
6
0
对。
|
![]() |
7
0
对于大型项目来说,强类型仍然是最好的方法。它不仅使代码完成(intellisense)变得更好,而且可以在编译时告诉您明显的问题。例如,假设
另一方面,很容易想象有一个JSON解析器像一个expando对象一样自动增长JSON中指定的属性会有多有用。
为了详细阐述我的观点,我认为C在获得其好处的同时,基本上可以避免动态输入的坏处。这是因为系统仍然鼓励在所有内容上使用类型,而不是其他动态语言,其中类型完全是可选的(甚至只是建议性的)。在C中,您可以只使用duck类型、expando属性和其他动态类型的优点“git'er done”,但它将用
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |