各メンバーがメッセージタイプを表す比較的大きな列挙型があります。クライアントは、列挙型の msg タイプに関連付けられた整数値を含むメッセージを受け取ります。メッセージ タイプごとに、メッセージを処理するための個別の関数コールバックがあります。
列挙値がコールバックのインデックスにマップされるスパース配列 (またはベクトル) を使用して、コールバックのルックアップとディスパッチをできるだけ迅速に行いたいと考えています。配列が関数型を保持できない場合、これは Python で可能ですか?
#pseudo code for 'enum'
class MsgType(object):
LOGIN, LOGOUT, HEARTBEAT, ... = range(n)
#handler class
class Handler(object):
def handleMsg(self, msg):
#dispatch msg to specific handler
def __onLogin(self, msg):
#handle login
def __onLogout(self, msg):
#handle logout
更新: 用語が明確ではありませんでした。私は今、Python 辞書ルックアップが O(1) の複雑さを持っていることを理解しており、完璧な候補となっています。ありがとう。