問題タブ [pass-by-value]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
146 参照

php - (どのように)オブジェクト参照を使用する必要がありますか?

例を考えてみましょう。

会社のスタッフを処理するアプリケーションライブラリ。スタッフの詳細はCSVファイルに保存されます(これは例としてのみ使用されているため、これを判断しないでください)。
スタッフ情報を処理するクラスは次のとおりです(画像を提供するためにコードを非常に簡略化しています)。

現在、アプリケーションで使用されている参照はありません。すべてのオブジェクト変数は値渡しされます。これにはオーバーヘッドが発生する可能性があると思いました。したがって、すべてのEmployeeオブジェクトとTeamオブジェクトが作成されたら、それらへのすべての呼び出しを参照に変更してみました。例:

しかし、これによりメモリ使用量が一時的に増加し、私は驚きました。私が使用している例では、スタッフは200人しかいませんが、企業に対応する必要がある場合、これは数千以上になり、メモリ使用量はさらに増えると想像できます。

この例を考えていたとき、私は次のようなことができるORMを模倣しようとしました。

理想的には、「適切な」(初期?)オブジェクトはとにのみ格納されるStaff::$employeesためStaff::$teamsStaff::$teams_names['Team Name']への参照になりStaff::$teams[n]ます。同様に、などStaff_Team::$managersへの参照の配列になります。 しかし、私が述べたように、参照を使い始めるとすぐに、メモリ使用量が増加します。Staff::$employees

質問:
では、これをどのように処理する必要がありますか?
参照渡しを使用してメモリ使用量を気にする必要はありませんか、それとも値渡しを使用する必要がありますか?
この場合、どちらが優れているのか、そしてその理由は何ですか?

注1:私は(私が思うに)オブジェクトを値で渡すことと参照で渡すことの違いを理解しています。この例では、どちらが優れているかを尋ねているだけです。
注2:作成後にStaff_Employeeオブジェクトが操作される場合があります。おそらく非常に最小限です。

0 投票する
2 に答える
2092 参照

iphone - Objective-C メソッドは「値渡し」をサポートしていますか?

Objective-C メソッドは「値渡し」をサポートしていますか? または、より具体的に言うと、次のようになります。

  1. メソッドに渡されるパラメーターの既定の動作は参照渡しですか?
  2. はいの場合、状況によっては、これとは異なるものがありますか? たとえば、パラメーターがオブジェクトではなく基本的な int である場合などです。(または、これは目的 c には関係ありません)
  3. int などの基本変数の値渡しをサポートするメソッドを持つ方法はありますか?
  4. メソッドがオブジェクトの値渡しをサポートする方法はありますか? (ここではノーと仮定しますが、完全を期すために尋ねます。もちろん、メッセージ内で自分でコピーを作成することもできますが、このアプローチでは、これは客観的な c メソッドが提供するものではないと考えます。自作です)

ありがとう

0 投票する
6 に答える
7551 参照

c# - プロパティ-値または参照による?

私は:を公開する次のパブリックプロパティを持っていますArraylist

私が呼んでいる他の場所

これらは(プロパティを介して)プライベートArrayListに要素を追加しているようですが、_SpillageRiskDescriptionsこれが問題を引き起こすと予想していました。したがって、プロパティは元の変数への参照を返し、で渡さないと考えるのは正しいですか?これArrayListは参照型だからですか?int同じことが(たとえば)でも起こりますか?

0 投票する
1 に答える
600 参照

php - 外部配列への再帰的なPHP関数の書き込み

ここに2つの質問があります。なぜこうなった?そして、それについて何ができるでしょうか?

申し訳ありませんが、質問は非常に長いですが、ほとんどはprint_r出力されます!

基本的に、私はタグのフラット配列($tags)から始めます。それぞれにid(配列インデックス)とがnameありparent_idます。次に、再帰的に繰り返し、$tagsすべての子タグを親内にネストします。(下記参照)

できます!(出力については以下を参照してください)。しかし、私が抱えている問題は、タグのフラット配列が、ネスト/再帰を実行する関数内から書き込まれていることです。(下記参照)

タグのフラット配列:

これは、子タグをネストするために再帰的に呼び出される関数です。問題は内部にありifます:私はそれに割り当て$tagてからプロパティを$tree[$i]追加します。childrenこれにより、childrenプロパティがに追加され$tagます。これは私が起こらないようにしたいことです。

ネストされたタグの出力:

childrenプロパティをに追加するとき、またはこれが発生しないよう$tree[$i]に割り当てるときに、別の方法で何ができますか?$tag$tree[$i]

ありがとう!

0 投票する
3 に答える
5898 参照

c++ - C++: 組み込み (C ライクな) 型の場合、参照渡しよりも値渡しの方が一般的に効率的である理由

タイトルに示した通り

0 投票する
2 に答える
334 参照

c - グローバル リンク リストに格納された (および他の関数でアクセスされた) ローカル構造体は、VC2010 で機能します。これは正しい C99/ANSI ですか?

次のコードは正常に動作します。

構造体は main 以外の関数でローカルに作成されますが、localstructtest() のスコープ外のリンク リストからデータを取得できました。ローカル変数はスタック上に作成されますが、これはこの構造体にも当てはまりますか? それとも実際にヒープ上に作成され、ポインター/参照は有効なままですか? テストしたとき、これはひどく失敗すると予想していました。私は C++ プログラマーであり、C に参照渡しがないことの影響をおそらく完全には理解していないことを認めます。このように構造体データを使用しても問題ない場合、データはいつ取得されますか?解放された?

ありがとう!

0 投票する
4 に答える
1842 参照

c++ - =演算子をオーバーロードすると、オブジェクトのディープコピーが返されます

=そこで、整数のコンテナクラスを作成し、オブジェクトのディープコピーを返すことができるように、演算子をオーバーロードしたいと思います。私のコードは機能しますが、2つのオブジェクトが同じアドレスを指しています。これはmain.cppファイルです:

IntListこれは、クラスのヘッダーファイルです。

そして、これはIntClassoperator=()メソッドの実装です。

0 投票する
6 に答える
10385 参照

c++ - 値と const 参照に基づく関数のオーバーロード

次のようなものを宣言しますか

理にかなっていますか?発信者はどのようにそれらを区別できますか? 私はもう試した

0 投票する
6 に答える
6258 参照

c - 値渡しのポインタを変更する

リンクされたリストの先頭ノードでfoo(struct node *n)ある関数を指定しました。nここで、リストの最後を指す stfooを変更する必要があります。n

しかし、これはこの関数シグネチャで可能ですか?

tリストの最後へのポインターであると仮定します。

  • n = tポインターが値渡しされるため、機能しません。
  • *n = *tリストの先頭を上書きするため、機能しません。

私は何か見落としてますか?

0 投票する
2 に答える
1608 参照

asp.net - IListをフィルタリングする

_PaymentMethodsはパブリックプロパティであり、そのコピーをフィルタリングして変数に格納したいと思いますpaymentOptions

ただし、これを2回実行すると、変数_PaymentMethodsには削除されたアイテムが含まれなくなります。

値ではなく参照によって行われるようです...リストを配列にコピーしたくないLinqを使用する必要がありますか、それとも他の方法がありますか?

編集:私は今これを持っています: