4

例:

function create_pets(&$cats, &$dogs){
 $dogs = get_dogs();
 $cats = get_cats();
}

だから私はそれを次のように呼びます:

function foo(){
  create_pets($cats, $dogs);

  // here use $cats and $dogs variables normally
}

これらのゲッター関数のいずれかの戻り値を新しい変数に割り当てることができることはわかっていますが、これは単なる例です。私の状況では、単なるゲッター以上のものがあります...

4

2 に答える 2

1

誰もが言うように、答えは「状況次第」です。特定の例である「作成」関数では、コードの操作と保守があまり明確ではないため、このパターンを回避することをお勧めします。

しかし、ここに良いニュースがあります。参照を使用せずに、物事をシンプルかつコンパクトに保つ​​ために、あなたがやろうとしていることを実行する方法があります。

function create_pets(){
    return array(get_dogs(), get_cats());
}


function foo(){
    list($dogs, $cats) = create_pets();
    //here use $cats and $dogs variables normally
}

ご覧のとおり、配列を返し、リスト言語構造を使用して、個々の変数を1行で取得できます。また、ここで何が起こっているのかを判断するのも簡単です。create_pets()は明らかに新しい$catsと$dogsを返します。参照を使用する以前のメソッドでは、create_pets()を直接調べない限り、これは明確になりませんでした。

ただし、どちらの方法を使用してもパフォーマンスの違いは見られませんが、どちらも機能します。しかし、従いやすく、作業しやすいコードを書くことは、最終的には大いに役立つことがわかります。

于 2012-06-30T01:07:21.667 に答える
1

状況によります。ほとんどの場合、通常は値によって変数を呼び出しますが、コードの他の部分で変数の値を変更せずに変数の内容を変更したい特定の状況では、参照によって呼び出すことをお勧めします。それ以外の場合は、実際のコンテンツと実際のコンテンツのみが必要な場合は、値で呼び出すことをお勧めします。このリンクはそれを本当によく説明しています。http://www.exforsys.com/tutorials/c-language/call-by-value-and-call-by-reference.html

于 2012-06-30T00:27:45.557 に答える