锁定老帖子 主题:Ruby语法一问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-18
看了cookoo的回复,想到了一些,再说两句。
关于方法重载,我们可以考虑一下它的用法,抛开抬杠的因素,基本上是用在两个方面: 1 参数的类型不同 2 参数的个数不同 先从第2条看起,回忆一下自己写代码的经历,参数个数不同产生的原因基本上都是为了编写代码的简便,也就是说,起到的作用和缺省参数无异。 再来看看第1条,如果我没记错的话,无论是Java还是C++,方法重载都是在泛型之前加入语言的,也就是说,那个时候还没有泛型,所以,方法重载是一个很好的让代码优美的方案。但是,如果把泛型的因素考虑进去,方法重载的重要性就大大降低了,因为相对于泛型,方法重载就显得有些冗余了。Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。 因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。 |
|
返回顶楼 | |
发表时间:2006-10-18
dreamhead 写道 Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。 因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。 不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。 |
|
返回顶楼 | |
发表时间:2006-10-18
charon 写道 dreamhead 写道 Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。 因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。 不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。 或许用泛型这个说法不太严谨,但在这里,泛型和动态语言在这里所要表达的含义是相同的,都是可以支持各种类型(满足一定条件)。 |
|
返回顶楼 | |
发表时间:2006-10-18
dreamhead 写道 charon 写道 dreamhead 写道 Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。 因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。 不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。 或许用泛型这个说法不太严谨,但在这里,泛型和动态语言在这里所要表达的含义是相同的,都是可以支持各种类型(满足一定条件)。 动态语言不一定都是无类型声明的。 而且这里泛型和动态语言所要表达的含义的差距,就和无类型声明的动态语言和静态语言的距离是一样的。毕竟,一个是有约束并且编译期判决的,另一个是执行期判决的。所需要的单元测试量就大不一样。 |
|
返回顶楼 | |