2011-06-22 17 views
1

私は呼び出しが必要なAPIメソッドがあります。それは10のパラメータがあります。メソッドが必要とするすべての情報を保持するクラスを作成しようとしました。オブジェクトをメソッドに渡すことはできますか?引数をクラスとして渡す

myAPIMethod(myClass); 

これは簡単に機能しますか?

+1

クラスまたはクラスのインスタンスであるオブジェクトを渡すことを意味しますか?後者の場合は、はい。また、あなたはどの言語を使っていますか?Java、C++? –

+3

どの言語ですか?答えはほぼ確実です。「それほど単純ではありませんが、詳細を知っていれば何かを提案することができます。 APIを変更できますか? –

+0

私はAPIを変更できません。私はActionScript3を使用しています。 @ Zhehao:私はクラスのインスタンスを意味した。 – smulholland2

答えて

14

いいえ、それはそのようには動作しません。メソッドに10個のパラメータがある場合は、10個の引数を渡す必要があります。

APIを管理している場合は、代わりに1つのオブジェクトを受け入れるようにAPIをリファクタリングすることができます。

あなたはAPIの制御を持っていない場合、あなたはその後、あなたのコードは、あなたのクラスとAPIを呼び出すため、このメソッドを使用することができます

public void CallAPI(MyClass args) 
{ 
    myAPIMethod(args.Arg1, args.Arg2); // whatever args are needed for the method 
} 

の線に沿ってメソッドを書くことができます。これは、アプリケーションの複数の場所で10個の引数を使用して直接APIメソッドを呼び出すよりも、よりクリーンなアプローチになる可能性があります。しかし、これはメソッドが何で、どのように使用しているかによって異なります。

+0

送信ボタンのクリックイベントにCallAPI()を割り当てることはできますか? (as3) – smulholland2

+0

@steve残念ながら、私は知らない。私はActionScript3に慣れていない。しかし、あなたはclickイベントのハンドラの中でそれを呼び出すことができると思います。 –

1

あなたはクラスのインスタンスを作成し、オブジェクトと呼ばれ、オブジェクトを渡す - あなたの方法がが10個のパラメータを必要とする場合はこのように、「オブジェクト指向プログラミング」

、あなたは10個のパラメータを渡す必要があります。メソッドを書き換えない限り、10個のパラメータを含むオブジェクトを渡すことはできません。

+1

私は、引数としてクラスを渡す必要があるいくつかの理由が考えられます。そして、それはクラスが存在する言語を考える前です。 –

+0

@Frank Shearer - あなたがクラスを渡したい時があるのは間違いないが、問題の記述に基づいて、彼は実際にクラスを渡す必要はほとんどないと思ったので編集した。 – BlackJack

1

短い回答:いいえ、できません。

これはあなたが探していたものではありませんが、一部の言語(Pythonなど)ではpartial application(時には間違ってcurryingと呼ばれる)という名前を作成できます。これにより、別の関数を呼び出すが、事前に指定されたいくつかのパラメータを持つ新しい関数を作成することができます。

関連する問題