2011-12-07 9 views
1

のは、Cコードに続くと仮定してみましょう:モジュール間で通信するにはどうすればいいですか?

// events.h 
enum Events {eOne, eTwo, eThree}; 
enum Events getEvent(void); 

...

//ctrl.c 
#include "events.h" 

void ctrl(void) 
{ 
    switch(getEvent()) 
    { 
    case eOne: 
     // ... 
     break; 
    case eTwo: 
     // ... 
     break; 
    case eThree: 
     // ... 
     break; 
    default: 
     ; 
    } 
} 

これを実装するニシキヘビの方法は何ですか?簡単な方法は、列挙型の代わりに文字列を使用することですが、すべての文字列が正しく入力されていることを確認するにはどうすればよいですか(つまり、すべてのファイルで同じです)。

+0

あなたは 'enum'sを実装するためのニシキヘビの方法、' switch'文、モジュール間の通信に神託の方法、または何かを実装するためのニシキヘビの方法を求めていますそれ以外は?より多くのコードを提供できますか?あなたがやっていることに応じて、さまざまな解決策があります。 – Nate

+0

@ ivand58:モジュール間の通信に関して考えているユースケースは何ですか? – pyfunc

+0

ユーザーのシナリオを提示できますか?見た目からは、あなたが必要とするのは['carrot'](http://ask.github.com/carrot/introduction.html)...をインストールすることだと思うが、何かが欠けているかもしれない! – mac

答えて

1

次のPythonコードはCコードがどのように相互作用するかに似ています。別のモジュールの変数を使用するには、まずそのモジュールをインポートする必要があります。

// events.py 
class Events: 
    eOne, eTwo, eThree = range(3) 

def getEvent(): 
    # add code for getEvent here (might have been in events.c for C code) 
    return some_event 

...

// ctrl.py 
from events import Events, getEvent 
def ctrl(): 
    event = getEvent() 
    if event == Events.eOne: 
     # ... 
    elif event == Events.eTwo: 
     # ... 
    elif event == Events.eThree: 
     # ... 
    else: 
     # default 
0

文字列を定数にすると、それらを名前で参照できるので、ソースコードにマジック文字列がぶら下がってしまいます。これらの定数は、共通のモジュールまたはクラスで定義できます。

関連する問題