問題タブ [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.
java - Java のメソッド パラメータでキーワード「final」を使用する必要があるのはなぜですか?
final
メソッドのパラメーターで使用する場合、キーワードが本当に便利な 場所がわかりません。
匿名クラスの使用、可読性、意図の宣言を除外すると、私にはほとんど価値がないように思えます。
一部のデータが一定であることを強制することは、見かけほど強力ではありません。
パラメータがプリミティブである場合、パラメータは値としてメソッドに渡され、それを変更してもスコープ外では影響がないため、影響はありません。
参照によってパラメーターを渡す場合、参照自体はローカル変数であり、参照がメソッド内から変更された場合、メソッドのスコープ外からは何の影響もありません。
以下の簡単なテスト例を考えてみましょう。メソッドが与えられた参照の値を変更しても、このテストは成功しますが、効果はありません。
java - Javaで「参照」ではなく「値」で渡す理由を誰かが説明してくれますか?
私はJavaにかなり慣れていません(長年他のものを書いてきました)。何かが欠けていない限り(ここで間違っていることを嬉しく思います)、次は致命的な欠陥です...
さて、私はJavaではすべてが「参照」ではなく「値」によって渡されるという(かなり言葉遣いが悪い)概念をよく知っていますが、Stringはオブジェクトであり、あらゆる種類のベルとホイッスルを持っているので、期待するでしょうint とは異なり、ユーザーはメソッドに渡されたものを操作できます (オーバーロードされた = によって設定された値に固執することはありません)。
このデザインの選択の背後にある理由を誰か説明してもらえますか? 私が言ったように、私はここにいるつもりはありません。おそらく、明らかな何かが欠けているのでしょうか?
javascript - JavaScript は参照渡しまたは値渡しの言語ですか?
プリミティブ型 (数値、文字列など) は値で渡されますが、オブジェクトは不明です。どちらも値で渡される可能性があるためです (オブジェクトを保持する変数が実際にはオブジェクトへの参照であると考える場合)。 )および参照渡し(オブジェクトへの変数がオブジェクト自体を保持していると考える場合)。
結局のところどうでもいいことなのですが、慣例に沿って引数を渡す正しい方法を知りたいのです。これに関するセマンティクスを定義する JavaScript 仕様からの抜粋はありますか?
python - Python で値を渡す
リスト、配列などのコレクションをPythonの別の関数に渡すと、そのコピーが作成されますか、それとも単なるポインターですか?
json - JSON obj を解析関数から渡しますか? | | 初心者のJavaScriptの質問
関数からオブジェクトを渡そうとしています。これが私のコードです:
私がやりたいのは、parseJSON 関数内でオブジェクト o を使用する代わりに、オブジェクトを渡したいので、loadJSON() 呼び出しの後にオブジェクトを操作できるようにすることです。解析関数内に innerHTML 呼び出しがあるのは「きれい」ではないことがわかりました。
たとえば、スクリプトの開始時に「var jsonOutput」を宣言してから「jsonOutput = o」を作成するなど、多くの反復を試みましたが、jsonOutputが未定義のままになります。jsonOutput を返そうとすると、どこに返されているのかわかりません。とにかく使用できません。
グローバル変数を作成する必要がありますか? 単純な「global jsonOutput」宣言を試みましたが、関数内で変更されていないようです。
困っています、助けてください。
c - Cの関数に渡されたポインターを変更するにはどうすればよいですか?
したがって、構造体のリストに構造体を追加するための、次のようなコードがあります。
これらの構造は次のように定義されています。
次に、別のファイルで次のようなことを行います。
ただし、この後も、lはbarPush内で作成された変更バージョンではなく、EMPTY_LISTを指します。リストを変更したい場合は、ポインターをポインターとして渡す必要がありますか、それとも他の暗い呪文が必要ですか?
java - Java は決して参照渡しではありませんよね?...そうですか?
重複の可能性:
Java は「参照渡し」ですか?
今日、珍しい Java メソッドを見つけました。
変数、複雑なオブジェクトを渡すかどうかにかかわらず、Java の動作について読んだすべてのことによると、このコードはまったく何もしないはずです。ええと...ここで何か足りないのですか?私には見落とされた微妙な点がありますか、それともこのコードはthedailywtfに属していますか?
python - Pythonで値渡しの動作をエミュレートする
Pythonで値渡しの動作をエミュレートしたいと思います。言い換えれば、私が書いた関数がユーザー提供のデータを変更しないことを絶対に確認したいと思います。
考えられる1つの方法は、ディープコピーを使用することです。
この目標を達成するためのより効率的またはよりPython的な方法があり、渡されるオブジェクトについて可能な限り少ない仮定を行います(.clone()メソッドなど)
編集
技術的には、Pythonのすべてが値によって渡されることを認識しています。私はその振る舞いをエミュレートすることに興味がありました。つまり、関数に渡されたデータを台無しにしないようにすることです。最も一般的な方法は、問題のオブジェクトを独自のクローンメカニズムまたはディープコピーを使用してクローンすることだと思います。
python - Python の関数との間で多くの変数を渡すにはどうすればよいですか?
私は科学的プログラミングを行っており、ユーザーにプロンプトと変数のペアを表示し、変数を編集させてから、新しい変数を使用して計算を実行させたいことがよくあります。私はこれを頻繁に行うので、wxPython クラスを作成して、このコードをメイン プログラムから移動しました。変数の型 (string、float、int)、プロンプト、および変数の現在の値を使用して、変数ごとにリストを設定します。次に、これらすべてのリストを 1 つの大きなリストに配置すると、私のユーティリティが適切にフォーマットされた wxPython パネルを作成し、プロンプトと編集可能な現在の値が表示されます。
私が始めたとき、私はいくつかの変数しか持っていなかったので、各変数を書き出しました。
今、私はこのルーチンを多くの変数 (10-30) に使用したいと考えていますが、このアプローチはうまくいきません。list.append() ステートメントを使用して、複数行にわたる関数への入力リストを作成できます。ただし、コードが関数から戻ると、正しい変数にアンパックする必要があるこの膨大なリストが得られます。これは管理が難しく、入力リストと出力リストの同期がずれやすくなりそうです。さらに悪いことに、それは不格好に見えます。
多くの変数を Python の関数に追加情報とともに渡して編集できるようにし、変数を元に戻してプログラムの残りの部分で使用できるようにする最良の方法は何ですか?
参照によって変数を関数に渡すことができれば、ユーザーはそれらを変更することも変更することもできず、プログラムが関数から戻ったときに値を使用することになります。入力リストを複数行にわたって作成するだけでよく、入力リストが出力リストと同期しなくなる可能性はありません。しかし、Python はこれを許可しません。
大きなリストを小さなリストに分割してから、関数に出入りするために大きなリストに結合する必要がありますか? それとも、エラーを起こす場所が増えるだけですか?
function - PHP と C++ の 2 つの場所だけが、値渡しのように見えるものが実際に参照渡しであることに注意する必要があるのでしょうか?
単純なデータ型の変数を関数の引数として渡し、値を変更できる場合に注意する必要があるのは、PHP と C++ の 2 つだけですか?
そのような
そして3行目、echo $countは2以外のものを表示します。それが発生する可能性があるのはPHPとC ++だけです。他に起こりうる場所はありますか?
更新:つまり、「値渡し」のように見えるものは、実際には「参照渡し」です。Java、Perl、PHP、Python、および Ruby でオブジェクトを渡す場合、自動的に参照渡しになり、オブジェクトのインスタンス変数の値を変更できます。非オブジェクトを渡すのはどうですか?