常常搞不清楚,include
,extend
,require
,load
這幾個差異。
後來發現還有一個 autoload
module
include
& extend
主要是將 module
的方法,可以繼承給 class
或 instance
使用。
include
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
extend
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
由此可知
extend
增加 class_methods- 如果是 instance 用 extend 則會是 instance_methods
include
增加 instance_methods
也可以用 include 導入 module 的 method
module.rb
1 2 3 4 5 |
|
test.rb
1 2 3 4 5 6 |
|
另一個跟 include 類似的 prepend
- include 會將 module 加入到 class 的後面
- prepend 會將 module 加入到 class 的前面
Ruby 理解 Ruby 中的 include 和 prepend
require
在 ruby 中,一開始用有很多 method
可以使用,是因為 ruby 將一些常用的都先載入進來。
而其他比較不常用的 method 就必須在要使用的時候,先 require 進來才可以。
1
|
|
也可以載入自己設定好的檔案,通常設定在 /lib/test.rb
1
|
|
不過記得路徑的問題,可以使用 require_relative
1
|
|
如果是放在資料夾底下的話 /lib/file/test.rb
1
|
|
Load
跟 require 類似,不過每 load 一次,就會重新執行該 load 的檔案。
以術語來說,load 要求載入一個檔案,而require要求某個功能特性(Feature)
1
|
|
官方文件:
參考文件: