0
デフォルト a_method
  p「困っている」
終わり

エイリアス :hero :a_method
デフォルト a_method
  ヒーロー
  p「勇者に救われた」
終わり

ここに救われたメソッドがありました。しかし、他の誰かが物語の終わり方が好きではなく、主人公がしたことを上書きすることにしました.

別名:ネメシス?
デフ?
   #どのメソッドを呼び出すか?
   p「宿敵に捕らえられた」
終わり

ネメシスがヒーローがしたことを上書きして、最終的な結果を変えることは可能ですか?

"窮地にある"
「宿敵に捕らえられた」
4

1 に答える 1

0

これは、エイリアシングなしで機能するようです。

def a_method
  hero
  p "Captured by the nemesis"
end

しかし、宿敵が「unalias」して、ヒーローが登場する前に :a_method の古い値を決定する方法はありません。Ruby がそのような履歴を保存しないという事実が、そもそもこのようなオーバーライドの状況でエイリアスが必要な理由です。

于 2012-05-27T03:49:14.607 に答える