2012-02-25 4 views
0

実際に私はこの行がどのように実行されるのか知る必要があります。関数のシーケンスを呼び出すには?

例:

Browser("InternetExplorer").Page("Stackoverflow").WebElement("textbox").set "user" 

上記の行は、Internet Explorerにブラウザを設定し、その中のページ「StackOverflowの」を見つけ、それにwebelement「テキストボックス」を見つけることのように実行し、それが「ユーザー」に値設定されます。このようにして操作が行われます。

このシーケンスコールがどのように行われるか知りたいと思います。私はブラウザがInternet Explorerにどのように設定されているかなどは望んでいません。

私は(「追加」)

楽しいのような単純な文を実行する必要があります。値(「2,3」)。

を計算し、私は機能「を追加」を呼び出すことによって実行するために上記の行を必要とする

値 "2,3"がパラメータとして渡され、 "compute"が加算され、最終結果が "5"に戻るはずです。

これを行う方法? 「Fun」と「Value」に異なるクラスを使用する必要があるのか​​、それとも同じクラスの「ファンクション」として実装する必要があります。

シーケンスコールの処理方法は?

答えて

3

この効果を達成するために、既存のオブジェクトへの参照を返すために十分である:

class Operator 
{ 
public: 
    Operator(const string& opAsStr) 
    { 
     ... 
    } 

    Operator& Values(const string& operands) 
    { 
     .... 
     return *this; 
    } 

    int Compute() // Compute must be a function, no properties in C++ 
    { 
     ... 
    } 
}; 

// Usable like this 
Operator("Add").Values("2,3").Compute() 

*thisすることができますチェーン多くのコールを返すより機能を定義すること。値(つまり、参照の代わりにOperator、または使用例に応じてconst参照)を返すことができます。 また、別のクラスのオブジェクトに参照(または値)を返すこともできます。

class A 
{ 
public: 
    void DoSomething() 
    { 
     .... 
    } 
}; 

class B 
{ 
public: 
    A MakeA() 
    { 
     return A(); 
    } 
}; 

B().MakeA().DoSomething(); 
+0

非常に感謝します。素敵で明確な説明... :) – thuk

+0

あなたはようこそ! –