iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
自我挑戰組

菜鳥建立自信心系列 第 16

Ruby - include和extend

  • 分享至 

  • xImage
  •  

includeextend是兩種不同的方式來引入模組(module)的。它們有不同的作用和影響:

  1. include
    • 使用include時,模組中的方法會變成實例方法,可以被類別的實例(物件)調用。
    • 如果你在一個類別中使用include,該類別的實例將能夠使用模組中的方法。
    • include通常用於將共享的功能添加到多個類別中,以便它們可以共享相同的方法。
module MyModule
  def hello
    puts "Hello from MyModule!"
  end
end

class MyClass
  include MyModule
end

obj = MyClass.new
obj.hello # 这里可以调用MyModule中的方法

在這個例子中,MyClass類別包含了MyModule模組,因此它的實例可以呼叫MyModule中的hello方法。

  1. extend
    • 使用extend時,模組中的方法會變成類別方法,只能被該類別本身調用,不能被該類別的實例(物件)調用。
    • 如果你在一個類別中使用extend,該類別本身可以使用模組中的方法,但該類別的實例不能。
    • extend通常用於在類別級別添加功能,而不是在實例級別。
module MyModule
  def hello
    puts "Hello from MyModule!"
  end
end

class MyClass
  extend MyModule
end

MyClass.hello # 这里可以调用MyModule中的方法,但不能通过实例调用

在這個例子中,MyClass類別使用extend將MyModule模組的方法加入為類別方法,因此只有MyClass類別本身可以呼叫hello方法,而不是類別的實例。


上一篇
Ruby - 類別(class)和模組(module)
下一篇
Ruby - Sample方法
系列文
菜鳥建立自信心30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言