タグ付けされた質問 「pass-by-value」

値渡しは「一方向の受け渡し」であるため、受信した関数(またはプロセスなどの他のエンティティ)内で渡された値の変更は返されません。


30
JavaScriptは参照渡しまたは値渡しの言語ですか?
プリミティブ型(数値、文字列など)は値で渡されますが、オブジェクトは不明です。どちらも値で渡すことができるためです(オブジェクトを保持する変数が実際にオブジェクトへの参照であると考える場合) )および参照渡し(オブジェクトへの変数がオブジェクト自体を保持していると考える場合)。 最後にはそれほど重要ではありませんが、規則を渡す引数を提示する正しい方法は何かを知りたいです。これに関するセマンティクスがどうあるべきかを定義するJavaScript仕様の抜粋はありますか?


12
Javaのメソッドパラメータで「final」というキーワードを使用する必要があるのはなぜですか?
finalキーワードがメソッドパラメータで使用される場合、キーワードが本当に便利な場所を理解できません。 匿名クラス、読みやすさ、意図宣言の使用を除外すると、私にはほとんど価値がないように見えます。 一部のデータを一定に保つことは、見かけほど強力ではありません。 パラメータがプリミティブの場合、パラメータは値としてメソッドに渡され、変更してもスコープ外では効果がないため、効果はありません。 パラメータを参照渡しする場合、参照自体はローカル変数であり、参照がメソッド内から変更された場合、メソッドスコープの外部からの影響はありません。 以下の簡単なテストの例を考えてみましょう。このテストはパスしますが、メソッドは与えられた参照の値を変更しましたが、効果はありません。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }

8
PHPの配列は、値として、または新しい変数への参照として、および関数に渡されるときにコピーされますか?
1)配列が引数としてメソッドまたは関数に渡される場合、それは参照渡しですか、それとも値渡しですか? 2)配列を変数に割り当てる場合、新しい変数は元の配列への参照ですか、それとも新しいコピーですか? これを行うことについて: $a = array(1,2,3); $b = $a; ある$bへの参照$a?


7
C ++でオブジェクトを関数に渡す方法は?
C ++プログラミングは初めてですが、Javaの経験があります。C ++で関数にオブジェクトを渡す方法に関するガイダンスが必要です。 ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?オブジェクトへの参照を保持する変数のみを渡すため、Javaではそのような問題はありません。 これらの各オプションをどこで使用するかについても説明していただければ幸いです。

7
C#での参照または値によるオブジェクトの受け渡し
C#では、非プリミティブ変数は参照によって渡され、プリミティブ値は値によって渡されると常に思っていました。 したがって、メソッドにプリミティブ以外のオブジェクトを渡す場合、メソッド内のオブジェクトに対して行われたことは、渡されるオブジェクトに影響します。(C#101のもの) しかし、System.Drawing.Imageオブジェクトを渡したときに、これは当てはまらないように見えました。system.drawing.imageオブジェクトを別のメソッドに渡し、そのオブジェクトに画像をロードした場合、そのメソッドをスコープ外にして呼び出し元のメソッドに戻ると、その画像は元のオブジェクトにロードされませんか? どうしてこれなの?


10
C#の参照型変数の「ref」の使用は何ですか?
値タイプ(int、structなど)をパラメーターとして(refキーワードなしで)渡すと、その変数のコピーがメソッドに渡されますが、refキーワードを使用すると、その変数への参照が渡されることを理解しています。新しいものではありません。 ただし、クラスなどの参照型では、refキーワードがなくても、参照はコピーではなくメソッドに渡されます。それではref、参照タイプでのキーワードの使用は何ですか? 例えば: var x = new Foo(); 次の違いは何ですか? void Bar(Foo y) { y.Name = "2"; } そして void Bar(ref Foo y) { y.Name = "2"; }

7
Javaで整数ラッパーを比較するときに、128 == 128がfalseであるのに、127 == 127がtrueであるのはなぜですか?
class D { public static void main(String args[]) { Integer b2=128; Integer b3=128; System.out.println(b2==b3); } } 出力: false class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } 出力: true 注:-128から127までの数値が当てはまります。

17
C ++-std :: shared_ptrまたはboost :: shared_ptrに参照を渡す
で動作する必要がある関数がある場合shared_ptr、(shared_ptrオブジェクトのコピーを避けるために)関数への参照を渡す方が効率的ではないでしょうか?考えられる悪い副作用は何ですか?私は次の2つのケースを想定しています。 1)関数内では、次のように引数のコピーが作成されます ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)関数内では、引数は次のようにのみ使用されます Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } どちらの場合も、参照ではなくboost::shared_ptr<foo>by値を渡す正当な理由がわかりません。値による受け渡しは、コピーのために「一時的に」参照カウントをインクリメントし、関数スコープを終了するときにそれをデクリメントします。私は何かを見落としているか? 明確にするために、いくつかの回答を読んだ後、私は時期尚早の最適化の懸念に完全に同意します。私の質問は、純粋に技術的なコードの観点からのものでした。


11
Pythonでの参照による整数の受け渡し
Pythonで参照によって整数を渡すにはどうすればよいですか? 関数に渡す変数の値を変更したい。Pythonのすべてが値渡しであることを読みましたが、簡単なトリックが必要です。たとえば、Javaでは、あなたはの参照型渡すことができInteger、Longなど 参照によって整数を関数に渡すにはどうすればよいですか? ベストプラクティスは何ですか?

6
python pandasデータフレーム、値渡しか参照渡しか
データフレームを関数に渡し、関数内で変更した場合、値渡しですか、それとも参照渡しですか? 次のコードを実行します a = pd.DataFrame({'a':[1,2], 'b':[3,4]}) def letgo(df): df = df.drop('b',axis=1) letgo(a) の値はa、関数呼び出し後も変更されません。それは値渡しであることを意味しますか? 私も以下を試しました xx = np.array([[1,2], [3,4]]) def letgo2(x): x[1,1] = 100 def letgo3(x): x = np.array([[3,3],[3,3]]) それは判明letgo2()変更を行いxxそしてletgo3()ません。なんでこんな感じ?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.