亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Ruby 的 include 和 included

Ruby 提供了混入(Mixin)的方式使用模塊(Module),它可以讓被混入的模塊中的代碼被其他類或者模塊使用。

本章節我們將講解其中一種混入方式:include

1. include

include將會把模塊里的方法包含進被執行的類的實例方法中。

實例:

module Person
  def name
    "My name is Andrew"
  end
end

class Member
  include Person
end

puts Member.new.name

# ---- 輸出結果 ----
My name is Andrew

解釋:當類Member包含了模塊Person之后,類Member增加了一個名為name的實例方法(類實例后可調用的方法)。

2. included

當我們include了一個模塊后,模塊被包含后會調用一個鉤子方法,這個方法名為included。

讓我們為模塊Person增加一個鉤子方法。

實例:

module Person
  def self.included(klass)
    puts "#{klass} included #{self}"
  end
  
  def name
    "My name is Andrew"
  end
end

class Member
  include Person
end

puts Member.new.name

# ---- 輸出結果 ----
Member included Person
My name is Andrew

解釋:當模塊Person被包含后,觸發了included鉤子方法,打印了“Member included Person”。

3. 小結

本章節我們學習了include,當類include一個模塊的時候,會將模塊中定義的方法填充進類的實例方法中,另外,當一個模塊被include的時候,會觸發included回調,并返回操作的類名。