我寫了兩種擴展的語法,但是出現了不同的行爲,一個返回50,另一個返回70,任何人都可以解釋爲什麼?ruby的擴展語法是如何工作的?
module Discount
def cost
super + 20
end
end
class Toy
extend Discount
def cost
50
end
end
# check
Toy.new.cost #=> 50
但是:
module Discount
def cost
super + 20
end
end
class Toy
def cost
50
end
end
# check
Toy.new.extend(Discount).cost #=>70
予給多個的一個例子: '類漢堡 DEF成本端 端 模塊乾酪漢堡包 DEF成本 超級+ 10 端 端 module LargeBurger def cost super + 15 end end burger = burger.new puts burger.extend(CheeseBurger).cost puts burger.extend(LargeBurger).cost' – Tsao
上面的代碼輸出60和75,看起來新的擴展模塊的成本方法沒有覆蓋舊的成本版本號 – Tsao
這使我有點困惑 – Tsao