在Ruby中,動態派發是指在運行時根據接收者對象的類型來確定調用哪個方法。這種靈活性使得可以根據不同的情況來執行不同的操作,而不需要在編碼時確定調用的方法。
動態派發可以應用在很多場景中,比如根據用戶輸入的不同命令來執行不同的操作,根據不同的數據類型來調用不同的處理方法等。以下是一個簡單的示例:
class Animal
def make_sound
raise NotImplementedError, "Subclasses must implement make_sound method"
end
end
class Dog < Animal
def make_sound
puts "Woof!"
end
end
class Cat < Animal
def make_sound
puts "Meow!"
end
end
def make_animal_sound(animal)
animal.make_sound
end
dog = Dog.new
cat = Cat.new
make_animal_sound(dog) # 輸出 Woof!
make_animal_sound(cat) # 輸出 Meow!
在這個示例中,make_animal_sound
方法根據傳入的動物對象來調用make_sound
方法,而不需要在編寫方法時指定調用哪個子類的方法。這樣就實現了動態派發的功能。