ITPUB??ì3
ITPUB论坛 » 动态语言 » 请教一个问题!关于ruby实现多态

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 请教一个问题!关于ruby实现多态
离线 4piggy
中级会员



精华贴数 0
个人空间 0
技术积分 1074 (1686)
社区积分 0 (1032038)
注册日期 2006-7-15
论坛徽章:0
      
      

发表于 2006-7-29 20:16 
请教一个问题!关于ruby实现多态

Ruby如何实现多态,高手能否给个例子?


只看该作者    顶部
离线 上帝知道我
中级会员



精华贴数 0
个人空间 0
技术积分 1190 (1484)
社区积分 0 (1032059)
注册日期 2006-7-15
论坛徽章:0
      
      

发表于 2006-7-29 20:18 
不明白你的意图如何

可以用google 试图search

多态, Polymorphism

根据对象的不同选择合适的操作。在Ruby中的实现方法是,根据被调的对象的不同来选择不同的方法。

obj = "abc"
print obj.length, "\n" # => 3
obj = [1,2,3,4]
print obj.length, "\n" # => 4

http://rubycn.ce-lab.net/man/appendix_dic.html

更深些

脱离 Rails 看 Ruby

http://www-128.ibm.com/developerworks/cn/java/j-ruby/

Ruby 多态性

在 Ruby 中没有接口!只要方法名匹配,就可以利用多态性。看看吧。

在清单 16 中,用 Ruby 重新创建了 Java Filter 类型。注意,每个类之间并没有关系(只不过它们都拥有同一个方法 apply_filter)。是的,这两个类应该被重构以扩展 Filter 基类;但是,在这里我只是想展示在 Ruby 中如何利用多态性,而类并不共享相同的类型。





duck typing 作关键词,可以找出更多English的解释和示例



有什么想法呢?


只看该作者    顶部
离线 上帝知道我
中级会员



精华贴数 0
个人空间 0
技术积分 1190 (1484)
社区积分 0 (1032059)
注册日期 2006-7-15
论坛徽章:0
      
      

发表于 2006-7-29 20:18 
在计算机程序设计中,运算符重载是多态的一种。这里,运算符(比如 +, = 或 ==)被当作多态函数,他们的行为随着其参数类型的不同而不同。运算符并不一定总是符号。

运算符重载通常只是一种语法糖衣。它可以简单地通过函数调用来模拟:

a + b × c

在一个支持运算符重载的语言里,上面的写法要比下面的写法有效而简练:

operator_add (a, operator_multiply (b,c))

(假设 × 运算符的优先级高于 +)

当一种语言允许运算符在某种情况下被隐式调用的时候,运算符重载将不只提供写法上的方便。例如,Ruby 中的 to_s 运算符就是如此,它返回一个对象的字符串表示。


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问