load, autoload, require, require_relative
load:
load 命令提供了一種最原始的方法,即每次都會重新加載整個文件,刷新內存中的類定義.
autoload:
load 命令每次都加載類有些浪費,很多類並不是一開始就需要,可以用autoload 來先創建一個鉤子,等到真的訪問到的時候再加載:
autoload :Calendar, './calendar.rb'
但這種方式有個問題: 相同常量如果多次定義autoload 鉤子,只有最後一個會被觸發. 設想在實際開發中,類定義可能分佈在多個文件中,所以這種方式並不常用.
require:
和autoload 一樣, require 想解決的也是性能問題: require 只在第一次被調用的時候被觸發,之後針對相同文件的require 就不會真正執行了
require_relative:
require_relative 相當於是默認將當前路徑加入了$LOAD_PATH,不用給相對路徑或絕對路徑, 其他和require 是一致的
沒有留言:
張貼留言