在 Ruby 中,模組是一種抽象的概念,它允許你將方法和常數組織在一起,以便重複使用和共享
跟類別一樣命名規定 = 必須是常數
module Invisible
def disappear
puts "vanish!"
end
end
class Bat
include Invisible
end
batman = Bat.new
batman.disappear
include
是一個用於將模組的方法添加到類別中的方法,使用 include 時,模組的方法成為該類別的實體方法,可以在該類別的所有實體上調用
module Swimmer
def swim
puts "swimming!!!"
end
end
class Bear
include Swimmer
end
class Fish
include Swimmer
end
bird = Bird.new
fish = Fish.new
bird.swim # 印出:swimming!!!
fish.swim # 印出:swimming!!!
extend
是一個用於動態將模組中的方法添加到對象(實體)上的方法,主要目的是為對象提供特定功能,而不影響類別本身
module MyModule
def say_hello
puts "Hello from MyModule!"
end
end
class MyClass
end
obj = MyClass.new
obj.extend(MyModule)
obj.say_hello # 印出:Hello from MyModule!
遇到同名類別時可以將類別包在不同的 module 裡,這麼一來就不會用錯類別了
module Marvel
class Hero
end
end
module Dc
class Hero
end
end
ironman = Marvel::Hero.new
batman = Dc::Hero.new
Day 14 預計介紹 Rails 簡介,我們明天見!