第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Ruby 的 include 和 included

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

本章節(jié)我們將講解其中一種混入方式:include。

1. include

include將會(huì)把模塊里的方法包含進(jìn)被執(zhí)行的類的實(shí)例方法中。

實(shí)例:

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

class Member
  include Person
end

puts Member.new.name

# ---- 輸出結(jié)果 ----
My name is Andrew

解釋:當(dāng)類Member包含了模塊Person之后,類Member增加了一個(gè)名為name的實(shí)例方法(類實(shí)例后可調(diào)用的方法)。

2. included

當(dāng)我們include了一個(gè)模塊后,模塊被包含后會(huì)調(diào)用一個(gè)鉤子方法,這個(gè)方法名為included。

讓我們?yōu)槟KPerson增加一個(gè)鉤子方法。

實(shí)例:

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

# ---- 輸出結(jié)果 ----
Member included Person
My name is Andrew

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

3. 小結(jié)

本章節(jié)我們學(xué)習(xí)了include,當(dāng)類include一個(gè)模塊的時(shí)候,會(huì)將模塊中定義的方法填充進(jìn)類的實(shí)例方法中,另外,當(dāng)一個(gè)模塊被include的時(shí)候,會(huì)觸發(fā)included回調(diào),并返回操作的類名。