2016-10-26 10 views
4

Swift 3 documentation状態:機能パラメータがSwiftに変更できないのはなぜですか?パラメータは不変で

関数のパラメータは、デフォルトでは定数です。

関数に渡された場合にもstates that値型がコピーされます。これらは関数またはメソッドに渡されたとき

文字列、配列、および辞書がコピーされています。だから、

、なぜ両方不変とコピーされたパラメータはありますか?引数が定数の場合、関数のスコープにその値のコピーは必要ありません。引数をコピーすると、渡された元の変数は関数内で変更できません(値型の場合)。

さらに、明示的にローカル変数に明示的にコピーすることなく、引数に対してローカル変更を加えることができないため、不変性は不便です。

文書を間違って読んでいますか?これがなぜこのような理由があるのでしょうか?

+0

FYI - 'class'型(参照型)ではなく、' struct'型(値型)であるため、文字列、配列、および辞書がコピーされます。コピーはパラメータとしてではなく、どの割り当てに対しても行われます。 – rmaddy

+0

はい、これは代入には意味がありますが、値の型がコピーされ、パラメータとして不変になる理由が混乱しています(どちらか一方で十分でしょうか?)。 – kennysong

+1

すべてのパラメータを 'let'と考えてください。 – rmaddy

答えて

関連する問題