论坛首页 编程语言技术论坛

Ruby语法一问

浏览 8276 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-18  
看了cookoo的回复,想到了一些,再说两句。

关于方法重载,我们可以考虑一下它的用法,抛开抬杠的因素,基本上是用在两个方面:
1 参数的类型不同
2 参数的个数不同

先从第2条看起,回忆一下自己写代码的经历,参数个数不同产生的原因基本上都是为了编写代码的简便,也就是说,起到的作用和缺省参数无异。

再来看看第1条,如果我没记错的话,无论是Java还是C++,方法重载都是在泛型之前加入语言的,也就是说,那个时候还没有泛型,所以,方法重载是一个很好的让代码优美的方案。但是,如果把泛型的因素考虑进去,方法重载的重要性就大大降低了,因为相对于泛型,方法重载就显得有些冗余了。Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。

因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。
0 请登录后投票
   发表时间:2006-10-18  
dreamhead 写道


Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。

因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。


不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。
0 请登录后投票
   发表时间:2006-10-18  
charon 写道
dreamhead 写道


Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。

因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。


不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。


或许用泛型这个说法不太严谨,但在这里,泛型和动态语言在这里所要表达的含义是相同的,都是可以支持各种类型(满足一定条件)。
0 请登录后投票
   发表时间:2006-10-18  
dreamhead 写道
charon 写道
dreamhead 写道


Ruby和Python之类的动态语言天生就支持泛型,第1条在这里就显得无关紧要了。

因此,从实用性的角度而言,方法重载在Ruby中确实没有存在的意义。


不能在方法/函数头中声明参数类型的语言,应该说是无所谓泛型这个概念吧。既不能说支持,也不能说不支持。


或许用泛型这个说法不太严谨,但在这里,泛型和动态语言在这里所要表达的含义是相同的,都是可以支持各种类型(满足一定条件)。

动态语言不一定都是无类型声明的。
而且这里泛型和动态语言所要表达的含义的差距,就和无类型声明的动态语言和静态语言的距离是一样的。毕竟,一个是有约束并且编译期判决的,另一个是执行期判决的。所需要的单元测试量就大不一样。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics