1
在我的假設應用程序中,用戶可以提出問題,然後通過Oracle
回答。您可以使用Predictor.predictor
方法獲得適當的Oracle
,然後您可以向其提供您的問題。當你的問題#ask
,你會得到一個迴應,連同Oracle
的確定性(一個0到1範圍內的浮點數)關於它的響應。如何在一次調度一個實例之前同時調度一個方法?
class BaseOracle; def ask(question); ...; end; end
class UnreliableOracle < BaseOracle; ...; end
module Predictor
def self.predictor
@predictor ||= UnreliableOracle.new
end
end
Predictor.predictor.ask("How many fingers am I holding up?")
# => ["three fingers", 0.2]
在這個實現中,你每次都得到一個相同的Oracle,一個UnreliableOracle實例。我想要做的是更改Predictor.predictor的實現,以便將調用的方法委託給Oracles的集合,其中一些比其他更好。換句話說,我希望它能這樣工作:
class BaseOracle; ...; end
class UnreliableOracle < BaseOracle; ...; end
class PopCultureOracle < BaseOracle; ...; end
class ScienceOracle < BaseOracle; ...; end
class LiteraryOracle < BaseOracle; ...; end
class FingerCountingOracle < BaseOracle; ...; end
module Predictor
def self.predictor
############## What goes here?
end
end
# This actually asks several oracles for an answer and picks the best one.
Predictor.predictor.ask("How many fingers am I holding up?")
# => ["four fingers", 1.0]
這樣做的最佳方法是什麼?