require load autoload
require
1.kernel method,可以加载ruby文件,也可以加载外部的库。
2.相比load ,针对同一个文件,它只加载一次
load
1.与require很类似,但是load会每次都重新加载文件。
2.大部分情况下,除非你加载的库变动频繁,需要重新加载以获取最新版本,一般建议用require来代替load.
autoload
1.用法稍稍不同:autoload(const_name, 'file_path'), 其中const_name 通常是模块名,或者类名。
2.对于load和require,在ruby运行到require/load时,会立马加载文件,而autoload则只有当你调用module或者class时才会加载文件。
include extend
include
1.当一个类或者模块 include了一个module M时, 则该类或者模块就拥有了该module M的方法。
2.当涉及多个类调用同一方法时,这个方法就可以抽离出来,放入module中,然后类只需include该module即可。这样的做法也正体现了DRY原则。
extend
1.当一个类或者对象使用extend 时,相当于打开了该类或者该对象的单件类,为其添加了单件方法。
pretend
1.相比include,extend, prepend「Available since Ruby 2」的知名度和使用率要少很多。
2.prepend和include很像,当一个类prepend或include 一个模块时,该模块中的方法会成为该类的实例方法。
3.二者的区别在于,模块在祖先链中的位置。 使用include时,模块在包含它的类之上。如果是prepend, 则是在prepend它的类之下。而祖先链中位置的不同,决定了方法调用的顺序。
网友评论