-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
「シャローコピー=参照の値渡し」と誤解した読者でも、疑問なくシャローコピーとディープコピーを理解できるように改善しませんか? #605
Comments
@apikmin JavaとJavaScriptでどちらもシャローコピーとディープコピーの指す内容に違いはないと思います。もし本書で、違いがあるように思えた箇所がありましたら、どの部分の文章なのかお教えいただければ幸いです😌 |
・Java ・JavaScript ・以上をJavaの用語に従ってまとめると、以下の違いがあるように認識しています。 |
ありがとうございます!これを読む限り、JavaとJavaScriptでは指す内容が違ってきそうですね。 本書の誤りの可能性もあるので、調査してから結論をご回答したいと思います! |
@apikmin 調査したところ次の結論が得られました。
調査の詳細はこちらを御覧ください: https://zenn.dev/suin/scraps/27e2c2663d002e この結論と頂いたご指摘(下記)を踏まえると、
「シャローコピー」と「ディープコピー」が指す内容が読者によって異なりそうなので、
というところに触れたほうがいいのかもしれないと思いました😌 僕の考えは上記のとおりですが、Javaプログラマの読者として@apikmin さんのご意見があればお聞きしたいです! |
詳細な調査を実施していただきまして、誠にありがとうございました。 一方、質問にて安易に他書を引用したことにより、貴書の範囲外の内容でお手を煩わせてしまい、誠に申し訳ございませんでした。 今後の改善策の一つ目に関して、シャローコピーの定義を明確にする際、参照渡しとの区別への言及があるとわかりやすいかと思います。 ご検討のほどよろしくお願いいたします。 |
@apikmin お考えが聞けて嬉しいです。 シャローコピー=参照渡しの誤解は、Javaに限らず他の言語でも見られることが判明しているので、Javaに限った問題ではなそうです。「Javaがおかしい」「他の言語がおかしい」といったニュアンスにならないように誤解に言及したほうがよさそうですね。上で出したアイディアのうち
というふうな説明はやめようと思います。 ・・・・・
これは僕がJava界隈の人からいろいろな意見をいただきたかったがための行動なので、お気になさらないでください🙇🏻♂️ むしろ、想定以上に反響があって @apikmin さんにご迷惑がかかってしまったのではないかと反省しております。。 |
「シャローコピー=参照の値渡し」と誤解した読者でも、疑問なくシャローコピーとディープコピーを理解できるように改善しませんか?背景
アイディア
|
(初心者のため勘違いしていたら申し訳ありません)
シャローコピー、ディープコピーの定義が言語間で異なるため、混乱しています。
私はJavaから来ましたが、Javaではシャローコピーは参照情報のコピーを、ディープコピーは実体のコピーを意味すると思っています。
一方、JavaScriptのシャローコピーの定義は、Javaでいうディープコピーを一層目限定で行うものというふうに読めます。
Javaの用語に従ってまとめると、以下のような認識です。
[参照のコピー] [1層目のディープコピー] [2層目以降のディープコピー]
Java ←シャロー→ ← ディープ →
JavaScript ← ? → ← シャロー → ← ディープ →
他の単元では他言語から来た人への注意書きがあり大変わかりやすかったので、もし上の認識が正しい場合、コピーに関しても注意書きがあるとわかりやすくなるかと思います。
関連ページ: https://typescriptbook.jp/reference/values-types-variables/array/spread-syntax-for-array
The text was updated successfully, but these errors were encountered: