質問: 0」のところで「lが定数だから値を代入できません。 (Left side of mutating operator isn't mutable: 'l' is a 'let' constant)(Cannot assign to value: 'l' is a 'let' constant)」というエラーが出ます。 ``` Left side of mutating operator isn't mutable: 'l' is a 'let' constant Cannot assign to value: 'l' is a 'let' constant ``` ### 質問 このエラーを解消するにはどうすれば良いでしょうか? また重複しないランダムな数字を得るにはどのようなプログラムを書けばいいでしょうか? (これで正しいでしょうか?)
回答: `for in`文の中で使う要素(この場合は`l`)は定数です。これはSwiftの仕様です。 `for l in a`は、ループが1周回るたびに、`l`の値が`a[0]`, `a[1]`...と変化していくものです。もし`l`の値を勝手に変えることができると、配列`a`の中にない値にすることもでき、不具合の温床になってしまいます。 (今回の場合は、`a`は0から9までの整数が入った配列と考えてください) 質問のコードは、`for in`文の中で`l`の値を変えなければ成立しないような処理になっています。エラーを解消するには、何をループさせるかを大きく考え直さなければいけません。 例えば、 1:空の配列kを用意 2:ランダムな数字pを1つ生成する 3:既に配列kに入っている要素をそれぞれpと比較 4:pと同じ数字がkに入っていなければ、pをkに加える(この結果、kの要素の個数が1個増える) 5:上記の2-4をループさせ、kの要素の個数が一定以上になったら終了 などがありえます。 3の処理では、別のループを回してもよいですが、`indexOf`を使う方法などもあります。