Rust part13at TECHRust part13 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト4:デフォルトの名無しさん 21/11/07 12:23:40.47 yCoK9XU3.net 乙 シャドーイングが困るのって関数がよっぽど長いときだけなんで問題にならんよね 5:デフォルトの名無しさん 21/11/07 13:02:12.62 BjoZRpKT.net >前スレの質問「間違って同じ変数名つけたコード片突っ込んでしまった系だと他言語にあるらしい2重宣言エラーないの怖くないですか?」 他の言語でもスコープが違えば二重宣言エラーになりません つまり他の言語でも意図しない同名変数ミスは同じように起き得ます 例えば以下はC言語の例 int c = 100; int main() { int c = 200; { int c = 300; } printf("%d\n", c); /* コンパイルは通って 200 となる */ } Rustのシャドーイングは同じブロックスコープでも同名変数が通りますが 仮にミスで同名変数を付けたコードを挿入してしまったとしても ・その時点で先行の変数が既にライフタイム尽きていれば影響ゼロ ・その時点で先行の変数のライフタイムがあって割り込む形になる場合 ・それ以降で二度の消費が発生して借用エラー発生となる可能性が高い ・先行の変数が一度も使われていない段階なら未使用warning発生 ・型が違っていれば割り込む形であっても型違いでエラー発生 と影響ゼロもしくは引っかかる可能性が高いでしょう >>4 おっしゃる通り、そもそも意図しない同名変数に気付かない時点で「その関数は長すぎ」ですね 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch