【问题标题】:What are some examples where dynamic typing is preferred to static typing?有哪些动态类型优于静态类型的示例?
【发布时间】:2015-10-26 04:13:41
【问题描述】:

让我们看一个增加整数的简单函数:

静态输入:

function incrementNumber(int n) {
    n = n + 1;
}    

动态输入:

function incrementNumber(n) {
    if (type of n != int) {
        throw Error;
    }
    n = n + 1;
}    

这些实现了相同的目标,但由于需要“类型检查”,动态方法更丑陋且更长。

我看到很多程序员使用这种方法,这让我想知道动态类型语言到底有什么好处,因为大多数函数都需要像这样的参数检查?

你有没有动态类型比静态类型更有效(或看起来)更好的例子?

【问题讨论】:

  • 如果你对动态类型进行类型检查,那么目的就失去了。相反,您应该只关心 + 运算符是为任何传入的类型定义的事实。因此,无论它是 int、decimal 还是 string,只要他们知道如何进行 + 操作,它就应该工作,不是吗?
  • 这正是我感到困惑的原因:类型检查违背了动态类型的目的,但同时我看到很多开发人员都在这样做。那么这是一种不好的做法吗?
  • 这可能更多是因为知识不足或新手编程,而不是糟糕的做法。 :)

标签: typing duck-typing dynamic-typing static-typing


【解决方案1】:

如果你要在做任何事情之前检查数据类型,它没有任何好处。

只有当您知道函数存在或可以应用运算符但编译器直到运行时才知道时,动态类型才有意义。或者在不定义其属性的情况下创建对象。

【讨论】:

  • 这正是我感到困惑的原因:类型检查违背了动态类型的目的,但同时我看到很多开发人员都在这样做。以这种方式处理动态类型只是“错误”吗?
  • 没错!使用动态时的类型检查是错误的,因为它没有利用动态类型的优势。
猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 2010-12-02
  • 2012-07-11
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多