私は拡張のための2種類の構文を書いていますが、1つのリターン50、他のリターン70、誰もが説明することができる別の動作が表示されますか?ルビーの拡張構文はどのように機能していますか?
module Discount
def cost
super + 20
end
end
class Toy
extend Discount
def cost
50
end
end
# check
Toy.new.cost #=> 50
しかし:あなたはクラス宣言、私の際extend
を呼び出す最初のスニペットで
module Discount
def cost
super + 20
end
end
class Toy
def cost
50
end
end
# check
Toy.new.extend(Discount).cost #=>70
に行く私はより多くの一例を与える: 'クラスバーガー デフ スーパー+ 10 エンド エンドのコストデフエンド エンド モジュールチーズバーガー の費用 モジュールLargeBurger def cost super + 15 end end = Burger.new はburger.extend(チーズバーガーは) は、burger.extend(LargeBurger)は、出力60と75以上の – Tsao
コードを.cost'置く新しい拡張モジュールのコストメソッドが古いコストをオーバーライドしていないに見えます.costます バーガーバージョン – Tsao
それは私をちょっと混乱させます – Tsao