设为首页 加入收藏

TOP

对象的消息模型(二)
2014-11-23 22:57:33 来源: 作者: 【 】 浏览:6
Tags:对象 消息 模型
s


Accelerando
Charles Stross


builder.books, b.book, b.title都是对象方法调用,由于XML的元素名是任意的,所以不可能事先定义这些方法,类似的代码如果是在java script中就是no method异常。那为什么上面的Ruby代码可以正确执行呢?其实只要理解了消息模型就很容易想明白,只需要定义一个通用的消息处理方法,所有未明确定义的消息都交给它来处理就行了,这就是所谓的Method Missing模式:
class Foo
def method_missing(method, *args, &block)

end
end
Method Missing除了对实现DSL很重要外,还可用于产生更好地调试和错误信息,把参数嵌入到方法名中等场合。目前,Ruby、Python、Groovy几种语言对Method Missing都有很好的支持,甚至在C# 4.0中也可以利用动态特性实现。
总结
本文主要介绍了对象的消息模型的特征,并比较了C++对象模型,Java、C#等基于类的静态类型语言中的对象模型与严格消息模型的差异,最后探讨了Method Missing相关话题。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇让protobuf生成器支持时间戳检查 下一篇基于顺序存储的多叉树实现: (3) ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: