Ruby里面extend include prepend 区别

Python012

Ruby里面extend include prepend 区别,第1张

在Ruby中,我们如果需要调用 module 的话可以使用 extend 、 include 、 prepend ,但是这些关键字具体有哪些区别呢。

现在我们在 Person 类中使用 extend 关键字来调用模块,使用相关方法,并且打印出相关信息。

我们由 Person.introduce 和 Person.current_time 可以观察出来 extend 关键字的作用是为 Person 添加了2个类方法。

上面两个类调用的方法都报错了可以看出, include 和 extend 相反, include 是为类中添加的实例方法,而不是类方法。

prepend 和 include 同样都是为类中添加实例方法,但不同之处在于,引入模块后的方法链会有一点区别

我们先看看 include 的方法链

再看看 prepend 的

可以看出 FooModule 和 Person 的顺序有什么不同,那么具体不同体现在哪,接下来我们调用方法就可以看出区别了。

include

prepend

可以看到,如果使用 prepend 的话我们会优先去查找 FooModule 中的 introduce 方法(如果 FooModule 没有 introduce 方法话,会依次去祖先链的上一级去查找 introduce 方法),而 include 是优先在 Person 中去查找。

Ruby是非常流行的构建网站技术,最著名的是Twitter,Basecamp,Github,Airbnb,Slideshare,Groupon。

Rbuy和Python都是面向对象的语言,都是动态和灵活的,这些技术的主要区别在于他们解决问题的方式。Ruby提供了不同的方法。

最流行的Ruby框架是Ruby on

rails,它和Django非常类似,因为这两个框架都是为了解决相同的任务。如果我们比较这些技术的社区,你会意外的发现他们是一样的,然而形成这些团体的人是不同的。Python在数据科学和数学方面很受欢迎,你可以找到很多的引导者。

当你开发Web应用程序时,可以用RoR实现,也可以用Django,两者都是非常快速高效的,如果开发偏重于大量计算和数据处理的应用,则可以选择Python。

Python的支持者是世界上规模最大和构成最多样化的一个团队,不仅有数以千计的个人开发者,同时还有诸如谷歌、yandex、Dropbox、Mozilla、微软等巨头公司,他们和其他公司一起,已经用Python创建了世界最大的和最受欢迎的项目。

与Rbuy相比,Python更加流行,目前已广泛应用于人工智能、云计算开发、大数据开发、数据分析、科学运算、网站开发、爬虫、自动化运维、自动化测试等领域,就业范围广,薪资待遇高,且入门简单、语法清晰。

豆瓣

http://www.douban.com/group/topic/46948882/?cid=579722942

知乎

http://www.zhihu.com/question/21480874/answer/19170340

然后再跟你说一下,我的观点。

如果你是为了现在就找工作,而去学习的话。毫无疑问 第一Python,然后在考虑 Ruby。

如果你现在比较悠闲,只是为了学一门语言,暂时不考虑将其作为工作的话。

必须 Go语言。

Go语言的前景广大。可能二、三年迅速就火起来了。

其实说到底,语言这东西,只是一个工具而已。认准一个,看懂弄透,其他的语言也就触类旁通了。

程序=数据结构+算法。语言只是一直工具~~~ 切记,切记。