【发布时间】: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